♻️(frontend) sync publishing sources with Django backend settings
Replace hardcoded default publishing source constants with values from Django backend settings to prevent desynchronization between frontend and backend configurations.
This commit is contained in:
committed by
aleb_the_flash
parent
57f63bf891
commit
3e69a2380f
@@ -55,6 +55,7 @@ def get_frontend_configuration(request):
|
||||
"url": settings.LIVEKIT_CONFIGURATION["url"],
|
||||
"force_wss_protocol": settings.LIVEKIT_FORCE_WSS_PROTOCOL,
|
||||
"enable_firefox_proxy_workaround": settings.LIVEKIT_ENABLE_FIREFOX_PROXY_WORKAROUND,
|
||||
"default_sources": settings.LIVEKIT_DEFAULT_SOURCES,
|
||||
},
|
||||
}
|
||||
frontend_configuration.update(settings.FRONTEND_CONFIGURATION)
|
||||
|
||||
@@ -44,6 +44,7 @@ export interface ApiConfig {
|
||||
url: string
|
||||
force_wss_protocol: boolean
|
||||
enable_firefox_proxy_workaround: boolean
|
||||
default_sources: string[]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ import { Track } from 'livekit-client'
|
||||
import { useCallback, useMemo } from 'react'
|
||||
import { queryClient } from '@/api/queryClient'
|
||||
import { keys } from '@/api/queryKeys'
|
||||
import { useConfig } from '@/api/useConfig'
|
||||
import { usePatchRoom } from '@/features/rooms/api/patchRoom'
|
||||
import { useRemoteParticipants } from '@livekit/components-react'
|
||||
import { useUpdateParticipantsPermissions } from '@/features/rooms/api/updateParticipantsPermissions'
|
||||
@@ -9,14 +10,6 @@ import { useRoomData } from '@/features/rooms/livekit/hooks/useRoomData'
|
||||
import { isSubsetOf } from '@/features/rooms/utils/isSubsetOf'
|
||||
import Source = Track.Source
|
||||
|
||||
// todo - synchronisation with backend
|
||||
export const DEFAULT_PUBLISH_SOURCES: Array<Source> = [
|
||||
Source.Microphone,
|
||||
Source.Camera,
|
||||
Source.ScreenShare,
|
||||
Source.ScreenShareAudio,
|
||||
]
|
||||
|
||||
export const updatePublishSources = (
|
||||
currentSources: Source[],
|
||||
sources: Source[],
|
||||
@@ -36,8 +29,13 @@ export const usePublishSourcesManager = () => {
|
||||
const { mutateAsync: patchRoom } = usePatchRoom()
|
||||
|
||||
const data = useRoomData()
|
||||
const { data: configData } = useConfig()
|
||||
const configuration = data?.configuration
|
||||
|
||||
const defaultSources = configData?.livekit?.default_sources?.map((source) => {
|
||||
return source as Source
|
||||
})
|
||||
|
||||
// The name can be misleading—use the slug instead to ensure the correct React Query key is updated.
|
||||
const roomId = data?.slug
|
||||
|
||||
@@ -51,16 +49,16 @@ export const usePublishSourcesManager = () => {
|
||||
configuration?.can_publish_sources == undefined ||
|
||||
!Array.isArray(configuration?.can_publish_sources)
|
||||
) {
|
||||
return DEFAULT_PUBLISH_SOURCES
|
||||
return defaultSources
|
||||
}
|
||||
return configuration.can_publish_sources.map((source) => {
|
||||
return source as Source
|
||||
})
|
||||
}, [configuration?.can_publish_sources])
|
||||
}, [defaultSources, configuration?.can_publish_sources])
|
||||
|
||||
const updateSource = useCallback(
|
||||
async (sources: Source[], enabled: boolean) => {
|
||||
if (!roomId) return
|
||||
if (!roomId || currentSources == undefined) return
|
||||
|
||||
try {
|
||||
const newSources = updatePublishSources(
|
||||
|
||||
Reference in New Issue
Block a user