From 98f63c71721be68bb63cd7b40b38a008184487c9 Mon Sep 17 00:00:00 2001 From: Ryan Emmick Date: Wed, 11 Feb 2026 12:26:16 -0600 Subject: [PATCH] Clean up: deduplicate settings UI, fix backupCodec, remove dead export Signed-off-by: Ryan Emmick --- src/livekit/options.ts | 8 +- src/settings/SettingsModal.tsx | 242 +++++++----------- src/settings/settings.ts | 8 + .../CallViewModel/localMember/LocalMember.ts | 5 +- .../remoteMembers/ConnectionFactory.ts | 5 +- .../remoteMembers/ECConnectionFactory.test.ts | 7 +- 6 files changed, 113 insertions(+), 162 deletions(-) diff --git a/src/livekit/options.ts b/src/livekit/options.ts index 8b98d6113..aac7ce583 100644 --- a/src/livekit/options.ts +++ b/src/livekit/options.ts @@ -108,7 +108,10 @@ function buildPublishOptions( stopMicTrackOnMute: false, videoCodec: codec, videoEncoding, - backupCodec: { codec: "vp8", encoding: videoEncoding }, + backupCodec: { + codec: "vp8", + encoding: VideoPresets.h720.encoding, + }, } as TrackPublishDefaults; } @@ -156,6 +159,3 @@ export function getLiveKitOptions(): RoomOptions { return buildLiveKitOptions(); } } - -// Keep backward-compatible export for existing consumers -export const defaultLiveKitOptions: RoomOptions = buildLiveKitOptions(); diff --git a/src/settings/SettingsModal.tsx b/src/settings/SettingsModal.tsx index 74e58e05d..8acc400d1 100644 --- a/src/settings/SettingsModal.tsx +++ b/src/settings/SettingsModal.tsx @@ -20,6 +20,7 @@ import { iosDeviceMenu$ } from "../state/MediaDevices"; import { useMediaDevices } from "../MediaDevicesContext"; import { widget } from "../widget"; import { + type Setting, useSetting, soundEffectVolume as soundEffectVolumeSetting, backgroundBlur as backgroundBlurSetting, @@ -112,33 +113,47 @@ export const SettingsModal: FC = ({ ); }; - const ScreenShareSettings: React.FC = (): ReactNode => { - const [advancedEnabled, setAdvancedEnabled] = useSetting( - advancedScreenShareSetting, - ); - const [resolution, setResolution] = useSetting( - screenShareResolutionSetting, - ); - const [framerate, setFramerate] = useSetting(screenShareFramerateSetting); + const MediaQualitySettings: React.FC<{ + id: string; + header: string; + toggleLabel: string; + description: string; + toggleSetting: Setting; + resolutionSetting: Setting; + framerateSetting: Setting; + bitrateSetting: Setting; + codecSetting: Setting; + resolutionOptions: { value: string; label: string }[]; + bitrateRange: { min: number; max: number; step: number }; + }> = ({ + id, + header, + toggleLabel, + description, + toggleSetting, + resolutionSetting, + framerateSetting, + bitrateSetting, + codecSetting, + resolutionOptions, + bitrateRange, + }): ReactNode => { + const [advancedEnabled, setAdvancedEnabled] = useSetting(toggleSetting); + const [resolution, setResolution] = useSetting(resolutionSetting); + const [framerate, setFramerate] = useSetting(framerateSetting); const [framerateRaw, setFramerateRaw] = useState(framerate); - const [bitrate, setBitrate] = useSetting(screenShareBitrateSetting); + const [bitrate, setBitrate] = useSetting(bitrateSetting); const [bitrateRaw, setBitrateRaw] = useState(bitrate); - const [codec, setCodec] = useSetting(screenShareCodecSetting); + const [codec, setCodec] = useSetting(codecSetting); return ( <> -

{t("settings.screen_share_header", "Screen sharing")}

+

{header}

setAdvancedEnabled(e.target.checked)} @@ -147,29 +162,29 @@ export const SettingsModal: FC = ({ {advancedEnabled && ( <>
-
= ({
`${(v / 1_000_000).toFixed(1)} Mbps` } />
-
- - )} - - ); - }; - - const CameraSettings: React.FC = (): ReactNode => { - const [advancedEnabled, setAdvancedEnabled] = useSetting( - advancedCameraSetting, - ); - const [resolution, setResolution] = useSetting(cameraResolutionSetting); - const [framerate, setFramerate] = useSetting(cameraFramerateSetting); - const [framerateRaw, setFramerateRaw] = useState(framerate); - const [bitrate, setBitrate] = useSetting(cameraBitrateSetting); - const [bitrateRaw, setBitrateRaw] = useState(bitrate); - const [codec, setCodec] = useSetting(cameraCodecSetting); - - return ( - <> -

{t("settings.camera_header", "Camera quality")}

- - setAdvancedEnabled(e.target.checked)} - /> - - {advancedEnabled && ( - <> -
- - -
-
- - `${v} fps`} - /> -
-
- - - `${(v / 1_000_000).toFixed(1)} Mbps` - } - /> -
-
- -