✨(frontend) add effects quick access from in-conference video controls
Provide direct access to background and effects options from video device controls during conference for additional user convenience. Creates another pathway to effects configuration, giving users more flexibility in accessing video enhancement features while in meetings.
This commit is contained in:
committed by
aleb_the_flash
parent
7ec3e481ff
commit
aa09c15ecc
@@ -1,13 +1,14 @@
|
|||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import { useTrackToggle, UseTrackToggleProps } from '@livekit/components-react'
|
import { useTrackToggle, UseTrackToggleProps } from '@livekit/components-react'
|
||||||
import { Button, Popover } from '@/primitives'
|
import { Button, Popover } from '@/primitives'
|
||||||
import { RiArrowUpSLine } from '@remixicon/react'
|
import { RiArrowUpSLine, RiImageCircleAiFill } from '@remixicon/react'
|
||||||
import { Track, VideoCaptureOptions } from 'livekit-client'
|
import { Track, VideoCaptureOptions } from 'livekit-client'
|
||||||
|
|
||||||
import { ToggleDevice } from './ToggleDevice'
|
import { ToggleDevice } from './ToggleDevice'
|
||||||
import { css } from '@/styled-system/css'
|
import { css } from '@/styled-system/css'
|
||||||
import { usePersistentUserChoices } from '../../../hooks/usePersistentUserChoices'
|
import { usePersistentUserChoices } from '../../../hooks/usePersistentUserChoices'
|
||||||
import { useCannotUseDevice } from '../../../hooks/useCannotUseDevice'
|
import { useCannotUseDevice } from '../../../hooks/useCannotUseDevice'
|
||||||
|
import { useSidePanel } from '../../../hooks/useSidePanel'
|
||||||
import { BackgroundProcessorFactory } from '../../blur'
|
import { BackgroundProcessorFactory } from '../../blur'
|
||||||
import Source = Track.Source
|
import Source = Track.Source
|
||||||
import * as React from 'react'
|
import * as React from 'react'
|
||||||
@@ -15,6 +16,23 @@ import { SelectDevice } from './SelectDevice'
|
|||||||
import { SettingsButton } from './SettingsButton'
|
import { SettingsButton } from './SettingsButton'
|
||||||
import { SettingsDialogExtendedKey } from '@/features/settings/type'
|
import { SettingsDialogExtendedKey } from '@/features/settings/type'
|
||||||
|
|
||||||
|
const EffectsButton = () => {
|
||||||
|
const { t } = useTranslation('rooms', { keyPrefix: 'selectDevice' })
|
||||||
|
const { toggleEffects } = useSidePanel()
|
||||||
|
return (
|
||||||
|
<Button
|
||||||
|
size="sm"
|
||||||
|
square
|
||||||
|
tooltip={t('effects')}
|
||||||
|
aria-label={t('effects')}
|
||||||
|
variant="primaryDark"
|
||||||
|
onPress={toggleEffects}
|
||||||
|
>
|
||||||
|
<RiImageCircleAiFill size={24} />
|
||||||
|
</Button>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
type VideoDeviceControlProps = Omit<
|
type VideoDeviceControlProps = Omit<
|
||||||
UseTrackToggleProps<Source.Camera>,
|
UseTrackToggleProps<Source.Camera>,
|
||||||
'source' | 'onChange'
|
'source' | 'onChange'
|
||||||
@@ -128,6 +146,7 @@ export const VideoDeviceControl = ({
|
|||||||
onSubmit={saveVideoInputDeviceId}
|
onSubmit={saveVideoInputDeviceId}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<EffectsButton />
|
||||||
<SettingsButton settingTab={SettingsDialogExtendedKey.VIDEO} />
|
<SettingsButton settingTab={SettingsDialogExtendedKey.VIDEO} />
|
||||||
</div>
|
</div>
|
||||||
</Popover>
|
</Popover>
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
"audio": "Audioeinstellungen",
|
"audio": "Audioeinstellungen",
|
||||||
"video": "Videoeinstellungen"
|
"video": "Videoeinstellungen"
|
||||||
},
|
},
|
||||||
|
"effects": "Effekte anwenden",
|
||||||
"videoinput": {
|
"videoinput": {
|
||||||
"choose": "Kamera auswählen",
|
"choose": "Kamera auswählen",
|
||||||
"permissionsNeeded": "Kamera auswählen - genehmigung erforderlich",
|
"permissionsNeeded": "Kamera auswählen - genehmigung erforderlich",
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
"audio": "Audio settings",
|
"audio": "Audio settings",
|
||||||
"video": "Video settings"
|
"video": "Video settings"
|
||||||
},
|
},
|
||||||
|
"effects": "Effects",
|
||||||
"videoinput": {
|
"videoinput": {
|
||||||
"choose": "Select camera",
|
"choose": "Select camera",
|
||||||
"permissionsNeeded": "Select camera - permission needed",
|
"permissionsNeeded": "Select camera - permission needed",
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
"audio": "Paramètres audio",
|
"audio": "Paramètres audio",
|
||||||
"video": "Paramètres video"
|
"video": "Paramètres video"
|
||||||
},
|
},
|
||||||
|
"effects": "Effets d'arrière plan",
|
||||||
"videoinput": {
|
"videoinput": {
|
||||||
"choose": "Choisir la webcam",
|
"choose": "Choisir la webcam",
|
||||||
"permissionsNeeded": "Choisir la webcam - autorisations nécessaires",
|
"permissionsNeeded": "Choisir la webcam - autorisations nécessaires",
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
"audio": "Audio-instellingen",
|
"audio": "Audio-instellingen",
|
||||||
"video": "Video-instellingen"
|
"video": "Video-instellingen"
|
||||||
},
|
},
|
||||||
|
"effects": "Pas effecten toe",
|
||||||
"videoinput": {
|
"videoinput": {
|
||||||
"choose": "Selecteer camera",
|
"choose": "Selecteer camera",
|
||||||
"permissionsNeeded": "Selecteer camera - Toestemming vereist",
|
"permissionsNeeded": "Selecteer camera - Toestemming vereist",
|
||||||
|
|||||||
Reference in New Issue
Block a user