diff --git a/src/renderer/features/player/components/player-config.tsx b/src/renderer/features/player/components/player-config.tsx index 375c63801..e7f74c47e 100644 --- a/src/renderer/features/player/components/player-config.tsx +++ b/src/renderer/features/player/components/player-config.tsx @@ -2,7 +2,10 @@ import isElectron from 'is-electron'; import { useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { useAudioDevices } from '/@/renderer/features/settings/components/playback/audio-settings'; +import { + getDefaultAudioDevice, + useAudioDevices, +} from '/@/renderer/features/settings/components/playback/audio-settings'; import { ListConfigTable } from '/@/renderer/features/shared/components/list-config-menu'; import { usePlaybackType, @@ -253,7 +256,6 @@ const AudioDeviceConfig = () => { clearable comboboxProps={{ withinPortal: false }} data={audioDevices} - defaultValue={audioDeviceId} disabled={status === PlayerStatus.PLAYING} onChange={(e) => { setSettings({ @@ -265,6 +267,7 @@ const AudioDeviceConfig = () => { }, }); }} + value={audioDeviceId ?? getDefaultAudioDevice(audioDevices, playbackType)} width="100%" /> ); diff --git a/src/renderer/features/settings/components/playback/audio-settings.tsx b/src/renderer/features/settings/components/playback/audio-settings.tsx index a0099558a..3230a55a5 100644 --- a/src/renderer/features/settings/components/playback/audio-settings.tsx +++ b/src/renderer/features/settings/components/playback/audio-settings.tsx @@ -39,6 +39,14 @@ const getMpvAudioDevices = async () => { export type AudioDeviceOption = { label: string; value: string }; +export const getDefaultAudioDevice = ( + devices: AudioDeviceOption[], + playbackType: PlayerType, +): null | string => { + const defaultId = playbackType === PlayerType.LOCAL ? 'auto' : 'default'; + return devices.find((d) => d.value === defaultId)?.value ?? devices[0]?.value ?? null; +}; + export const useAudioDevices = (playbackType: PlayerType) => { const [audioDevices, setAudioDevices] = useState([]); @@ -137,7 +145,6 @@ export const AudioSettings = memo(() => {