From 2c7b1349312e3ffb67c416579a816e83e1adf0db Mon Sep 17 00:00:00 2001 From: jeffvli Date: Thu, 13 Nov 2025 13:39:35 -0800 Subject: [PATCH] add player store v2 migration --- src/renderer/store/player.store.ts | 58 +++++++++++++++++------------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/src/renderer/store/player.store.ts b/src/renderer/store/player.store.ts index 391ba62a0..ebb962c1e 100644 --- a/src/renderer/store/player.store.ts +++ b/src/renderer/store/player.store.ts @@ -90,6 +90,30 @@ interface State { queue: QueueData; } +const initialState: State = { + player: { + crossfadeDuration: 5, + index: -1, + muted: false, + playerNum: 1, + queueType: PlayerQueueType.DEFAULT, + repeat: PlayerRepeat.NONE, + seekToTimestamp: uniqueSeekToTimestamp(0), + shuffle: PlayerShuffle.NONE, + speed: 1, + status: PlayerStatus.PAUSED, + timestamp: 0, + transitionType: PlayerStyle.GAPLESS, + volume: 30, + }, + queue: { + default: [], + priority: [], + shuffled: [], + songs: {}, + }, +}; + export const usePlayerStoreBase = create()( persist( subscribeWithSelector( @@ -940,29 +964,7 @@ export const usePlayerStoreBase = create()( } }); }, - player: { - crossfadeDuration: 5, - index: -1, - muted: false, - playerNum: 1, - queueType: PlayerQueueType.DEFAULT, - repeat: PlayerRepeat.NONE, - seekBackward: 10, - seekForward: 10, - seekToTimestamp: uniqueSeekToTimestamp(0), - shuffle: PlayerShuffle.NONE, - speed: 1, - status: PlayerStatus.PAUSED, - timestamp: 0, - transitionType: PlayerStyle.GAPLESS, - volume: 30, - }, - queue: { - default: [], - priority: [], - shuffled: [], - songs: {}, - }, + ...initialState, setCrossfadeDuration: (duration: number) => { set((state) => { const normalizedDuration = Math.max(0, Math.min(10, duration)); @@ -1073,6 +1075,14 @@ export const usePlayerStoreBase = create()( merge: (persistedState: any, currentState: any) => { return merge(currentState, persistedState); }, + migrate: (persistedState, version) => { + if (version === 1) { + // Replace the old player store state with the new one + persistedState = { ...initialState }; + } + + return persistedState; + }, name: 'player-store', partialize: (state) => { const shouldRestorePlayQueue = useSettingsStore.getState().general.resume; @@ -1111,7 +1121,7 @@ export const usePlayerStoreBase = create()( return filteredState; }, storage: createJSONStorage(() => idbStateStorage), - version: 1, + version: 2, }, ), );