fix(ui): default project sorting to manual
This commit is contained in:
@@ -18,6 +18,23 @@ type SessionDisplayStore = {
|
||||
setProjectSortOrder: (order: ProjectSortOrder) => void;
|
||||
};
|
||||
|
||||
export const migrateSessionDisplayState = (
|
||||
persisted: unknown,
|
||||
version: number,
|
||||
): Partial<SessionDisplayStore> => {
|
||||
const state = (persisted ?? {}) as Partial<SessionDisplayStore>;
|
||||
if (version < 1) {
|
||||
return { ...state, displayMode: 'minimal', projectSortOrder: 'manual' };
|
||||
}
|
||||
if (version < 2) {
|
||||
return { ...state, projectSortOrder: 'manual' };
|
||||
}
|
||||
if (version < 3 && state.projectSortOrder === 'recent') {
|
||||
return { ...state, projectSortOrder: 'manual' };
|
||||
}
|
||||
return state;
|
||||
};
|
||||
|
||||
export const useSessionDisplayStore = create<SessionDisplayStore>()(
|
||||
persist(
|
||||
(set) => ({
|
||||
@@ -28,7 +45,7 @@ export const useSessionDisplayStore = create<SessionDisplayStore>()(
|
||||
// disappear once the persisted preference rehydrates. Users who opted into
|
||||
// showing archived have `true` persisted, which is preserved on rehydrate.
|
||||
showArchivedSessions: false,
|
||||
projectSortOrder: 'recent',
|
||||
projectSortOrder: 'manual',
|
||||
setDisplayMode: (mode) => set({ displayMode: mode }),
|
||||
setShowRecentSection: (show) => set({ showRecentSection: show }),
|
||||
setShowArchivedSessions: (show) => set({ showArchivedSessions: show }),
|
||||
@@ -38,21 +55,13 @@ export const useSessionDisplayStore = create<SessionDisplayStore>()(
|
||||
}),
|
||||
{
|
||||
name: 'session-display-mode',
|
||||
version: 2,
|
||||
version: 3,
|
||||
// v0 shipped 'default' as the only/initial mode, so most existing users
|
||||
// have it persisted by accident rather than choice. Nudge everyone onto
|
||||
// minimal once so the mode can be evaluated before removing it entirely.
|
||||
// v1→v2 adds projectSortOrder defaulting to 'recent'.
|
||||
migrate: (persisted, version) => {
|
||||
const state = (persisted ?? {}) as Partial<SessionDisplayStore>;
|
||||
if (version < 1) {
|
||||
return { ...state, displayMode: 'minimal', projectSortOrder: 'recent' };
|
||||
}
|
||||
if (version < 2) {
|
||||
return { ...state, projectSortOrder: 'recent' };
|
||||
}
|
||||
return state;
|
||||
},
|
||||
// v1→v2 adds projectSortOrder using the canonical manual ordering.
|
||||
// v2→v3 replaces the previously shipped recent default with manual.
|
||||
migrate: migrateSessionDisplayState,
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user