diff --git a/src/renderer/features/player/components/center-controls.tsx b/src/renderer/features/player/components/center-controls.tsx
index dbd847189..20bcfa2d9 100644
--- a/src/renderer/features/player/components/center-controls.tsx
+++ b/src/renderer/features/player/components/center-controls.tsx
@@ -16,7 +16,7 @@ import {
useButtonSize,
usePlayerRepeat,
usePlayerShuffle,
- usePlayerSong,
+ usePlayerSongProperties,
usePlayerStatus,
useSkipButtons,
} from '/@/renderer/store';
@@ -197,13 +197,14 @@ const SkipBackwardButton = ({ disabled }: { disabled?: boolean }) => {
};
const CenterPlayButton = ({ disabled }: { disabled?: boolean }) => {
- const currentSong = usePlayerSong();
+ const { id: currentSongId } = usePlayerSongProperties(['id']) ?? {};
+
const status = usePlayerStatus();
const { mediaTogglePlayPause } = usePlayer();
return (
diff --git a/src/renderer/features/player/components/player-config.tsx b/src/renderer/features/player/components/player-config.tsx
index 14246d877..99ab719eb 100644
--- a/src/renderer/features/player/components/player-config.tsx
+++ b/src/renderer/features/player/components/player-config.tsx
@@ -6,8 +6,8 @@ import { ListConfigTable } from '/@/renderer/features/shared/components/list-con
import {
usePlaybackType,
usePlayerActions,
- usePlayerData,
usePlayerProperties,
+ usePlayerSongProperties,
usePlayerSpeed,
usePlayerStatus,
} from '/@/renderer/store';
@@ -51,13 +51,6 @@ const getMpvAudioDevices = async () => {
export const PlayerConfig = () => {
const { t } = useTranslation();
- const { currentSong } = usePlayerData();
- const speed = usePlayerSpeed();
- const status = usePlayerStatus();
- const playbackType = usePlaybackType();
- const { crossfadeDuration, crossfadeStyle, transitionType } = usePlayerProperties();
- const { setCrossfadeDuration, setCrossfadeStyle, setSpeed, setTransitionType } =
- usePlayerActions();
const preservePitch = useSettingsStore((state) => state.playback.preservePitch);
const showLyricsInSidebar = useShowLyricsInSidebar();
const showVisualizerInSidebar = useShowVisualizerInSidebar();
@@ -75,101 +68,15 @@ export const PlayerConfig = () => {
[playbackSettings, setSettings],
);
- const [audioDevices, setAudioDevices] = useState<{ label: string; value: string }[]>([]);
-
- useEffect(() => {
- const fetchAudioDevices = async () => {
- if (!isElectron()) {
- return;
- }
-
- if (playbackType === PlayerType.WEB) {
- getAudioDevice()
- .then((dev) =>
- setAudioDevices(dev.map((d) => ({ label: d.label, value: d.deviceId }))),
- )
- .catch(() =>
- toast.error({
- message: t('error.audioDeviceFetchError', {
- postProcess: 'sentenceCase',
- }),
- }),
- );
- } else if (playbackType === PlayerType.LOCAL && mpvPlayer) {
- try {
- const devices = await getMpvAudioDevices();
- setAudioDevices(devices);
- } catch {
- toast.error({
- message: t('error.audioDeviceFetchError', {
- postProcess: 'sentenceCase',
- }),
- });
- }
- }
- };
-
- fetchAudioDevices();
- }, [playbackType, t]);
-
const options = useMemo(() => {
- const formatPlaybackSpeedSliderLabel = (value: number) => {
- const bpm = Number(currentSong?.bpm);
- if (bpm > 0) {
- return `${value} x / ${(bpm * value).toFixed(1)} BPM`;
- }
- return `${value} x`;
- };
-
const allOptions = [
{
- component: (
-