feat(renderer): persist last-opened folder (mc-file-store) + restore on mount

This commit is contained in:
2026-06-05 15:36:59 +05:30
parent ce2bf62d42
commit 5e5bab3da9
4 changed files with 52 additions and 2 deletions
+12 -2
View File
@@ -1,4 +1,5 @@
import { create } from 'zustand';
import { persist, createJSONStorage } from 'zustand/middleware';
import { immer } from 'zustand/middleware/immer';
import { enableMapSet } from 'immer';
import { ipc } from '@/lib/ipc';
@@ -68,7 +69,8 @@ function updateNode(tree: FileNode, dirPath: string, updater: (node: FileNode) =
}
export const useFileStore = create<FileState>()(
immer((set) => ({
persist(
immer((set) => ({
tree: null,
rootPath: null,
expanded: new Set<string>(),
@@ -221,5 +223,13 @@ export const useFileStore = create<FileState>()(
useFileStore.getState().markTabClean(activeTabId);
return true;
},
}))
})),
{
name: 'mc-file-store',
storage: createJSONStorage(() => localStorage),
// Only persist the folder path; tree, expanded Set, and openTabs are
// rebuilt on demand. The app re-opens the folder on startup.
partialize: (state) => ({ rootPath: state.rootPath }),
}
)
);