diff --git a/commafeed-client/src/app/store.ts b/commafeed-client/src/app/store.ts index cca234d7..f12a6e18 100644 --- a/commafeed-client/src/app/store.ts +++ b/commafeed-client/src/app/store.ts @@ -3,6 +3,7 @@ import { entriesSlice } from "app/entries/slice" import { redirectSlice } from "app/redirect/slice" import { serverSlice } from "app/server/slice" import { treeSlice } from "app/tree/slice" +import type { LocalSettings } from "app/types" import { initialLocalSettings, userSlice } from "app/user/slice" import { type TypedUseSelectorHook, useDispatch, useSelector } from "react-redux" @@ -14,11 +15,29 @@ export const reducers = { user: userSlice.reducer, } +const loadLocalSettings = (): LocalSettings => { + const json = localStorage.getItem("commafeed-local-settings") + if (json) { + return JSON.parse(json) + } + + // load old settings + const viewMode = localStorage.getItem("view-mode") + const sidebarWidth = localStorage.getItem("sidebar-width") + const announcementHash = localStorage.getItem("announcement-hash") + return { + ...initialLocalSettings, + viewMode: viewMode ? JSON.parse(viewMode) : initialLocalSettings.viewMode, + sidebarWidth: sidebarWidth ? JSON.parse(sidebarWidth) : initialLocalSettings.sidebarWidth, + announcementHash: announcementHash ? JSON.parse(announcementHash) : initialLocalSettings.announcementHash, + } +} + export const store = configureStore({ reducer: reducers, preloadedState: { user: { - localSettings: JSON.parse(localStorage.getItem("commafeed-local-settings") ?? JSON.stringify(initialLocalSettings)), + localSettings: loadLocalSettings(), }, }, })