From 65246b8be97e1d5c4cf91a4a137d6f2d82e8d815 Mon Sep 17 00:00:00 2001 From: Pas <74743263+Pasithea0@users.noreply.github.com> Date: Mon, 3 Nov 2025 14:22:53 -0700 Subject: [PATCH] fix the source getting reset when we change sources Changing sources causes a non fatal error, but we were clearing the last successful source when any error happened. Instead we can clear if it's fatal. --- src/pages/parts/player/PlaybackErrorPart.tsx | 8 +++++++- src/stores/player/slices/display.ts | 3 --- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/pages/parts/player/PlaybackErrorPart.tsx b/src/pages/parts/player/PlaybackErrorPart.tsx index 5081e829..975d1461 100644 --- a/src/pages/parts/player/PlaybackErrorPart.tsx +++ b/src/pages/parts/player/PlaybackErrorPart.tsx @@ -10,6 +10,7 @@ import { Title } from "@/components/text/Title"; import { useOverlayRouter } from "@/hooks/useOverlayRouter"; import { ErrorContainer, ErrorLayout } from "@/pages/layouts/ErrorLayout"; import { usePlayerStore } from "@/stores/player/store"; +import { usePreferencesStore } from "@/stores/preferences"; import { ErrorCardInModal } from "../errors/ErrorCard"; @@ -19,15 +20,20 @@ export function PlaybackErrorPart() { const modal = useModal("error"); const settingsRouter = useOverlayRouter("settings"); const hasOpenedSettings = useRef(false); + const setLastSuccessfulSource = usePreferencesStore( + (s) => s.setLastSuccessfulSource, + ); // Automatically open the settings overlay when a playback error occurs useEffect(() => { if (playbackError && !hasOpenedSettings.current) { hasOpenedSettings.current = true; + // Reset the last successful source when a playback error occurs + setLastSuccessfulSource(null); settingsRouter.open(); settingsRouter.navigate("/source"); } - }, [playbackError, settingsRouter]); + }, [playbackError, settingsRouter, setLastSuccessfulSource]); const handleOpenSourcePicker = () => { settingsRouter.open(); diff --git a/src/stores/player/slices/display.ts b/src/stores/player/slices/display.ts index f6070e52..21005cc2 100644 --- a/src/stores/player/slices/display.ts +++ b/src/stores/player/slices/display.ts @@ -1,7 +1,6 @@ import { DisplayInterface } from "@/components/player/display/displayInterface"; import { playerStatus } from "@/stores/player/slices/source"; import { MakeSlice } from "@/stores/player/slices/types"; -import { usePreferencesStore } from "@/stores/preferences"; export interface DisplaySlice { display: DisplayInterface | null; @@ -106,8 +105,6 @@ export const createDisplaySlice: MakeSlice = (set, get) => ({ s.status = playerStatus.PLAYBACK_ERROR; s.interface.error = err; }); - // Reset last successful source on playback error - usePreferencesStore.getState().setLastSuccessfulSource(null); }); set((s) => {