diff --git a/src/frontend/src/features/rooms/components/Permissions.tsx b/src/frontend/src/features/rooms/components/Permissions.tsx
index 63b9bb9b..a6433596 100644
--- a/src/frontend/src/features/rooms/components/Permissions.tsx
+++ b/src/frontend/src/features/rooms/components/Permissions.tsx
@@ -4,7 +4,7 @@ import { Dialog, H } from '@/primitives'
import { RiEqualizer2Line } from '@remixicon/react'
import { useEffect, useMemo } from 'react'
import { useSnapshot } from 'valtio'
-import { permissionsStore } from '@/stores/permissions'
+import { closePermissionsDialog, permissionsStore } from '@/stores/permissions'
import { useTranslation } from 'react-i18next'
import { injectIconIntoTranslation } from '@/utils/translation'
@@ -41,7 +41,7 @@ export const Permissions = () => {
permissions.isCameraGranted &&
permissions.isMicrophoneGranted
) {
- permissionsStore.isPermissionDialogOpen = false
+ closePermissionsDialog()
}
}, [permissions])
@@ -56,7 +56,7 @@ export const Permissions = () => {
aria-label={t(`heading.${permissionLabel}`, {
appTitle,
})}
- onClose={() => (permissionsStore.isPermissionDialogOpen = false)}
+ onClose={closePermissionsDialog}
>
{
+ const { t } = useTranslation('rooms', { keyPrefix: 'permissionsButton' })
+ return (
+
+ )
+}
diff --git a/src/frontend/src/features/rooms/livekit/components/controls/SelectToggleDevice.tsx b/src/frontend/src/features/rooms/livekit/components/controls/SelectToggleDevice.tsx
index 240f36e6..8158d0cf 100644
--- a/src/frontend/src/features/rooms/livekit/components/controls/SelectToggleDevice.tsx
+++ b/src/frontend/src/features/rooms/livekit/components/controls/SelectToggleDevice.tsx
@@ -25,9 +25,11 @@ import { Shortcut } from '@/features/shortcuts/types'
import { ToggleDevice } from '@/features/rooms/livekit/components/controls/ToggleDevice.tsx'
import { css } from '@/styled-system/css'
import { ButtonRecipeProps } from '@/primitives/buttonRecipe'
-import { useEffect } from 'react'
+import { useEffect, useMemo } from 'react'
import { usePersistentUserChoices } from '../../hooks/usePersistentUserChoices'
import { BackgroundProcessorFactory } from '../blur'
+import { useSnapshot } from 'valtio'
+import { permissionsStore } from '@/stores/permissions'
export type ToggleSource = Exclude<
Track.Source,
@@ -101,6 +103,18 @@ export const SelectToggleDevice =
({
const { userChoices } = usePersistentUserChoices()
+ const permissions = useSnapshot(permissionsStore)
+ const isPermissionDeniedOrPrompted = useMemo(() => {
+ switch (config.kind) {
+ case 'audioinput':
+ return (
+ permissions.isMicrophoneDenied || permissions.isMicrophonePrompted
+ )
+ case 'videoinput':
+ return permissions.isCameraDenied || permissions.isCameraPrompted
+ }
+ }, [permissions, config.kind])
+
const toggle = () => {
if (props.source === Track.Source.Camera) {
/**
@@ -161,6 +175,7 @@ export const SelectToggleDevice = ({
config={config}
variant={variant}
toggle={toggle}
+ isPermissionDeniedOrPrompted={isPermissionDeniedOrPrompted}
toggleButtonProps={{
...(hideMenu
? {
@@ -172,11 +187,16 @@ export const SelectToggleDevice = ({
{!hideMenu && (