refactor: abstract set value and save to local storage function

This commit is contained in:
Xu Quan 2025-06-24 15:07:52 +08:00
parent a0f4218d63
commit d0c7530691
4 changed files with 66 additions and 34 deletions

View file

@ -27,7 +27,19 @@ export type CommonExplorerStore = {
saveDataInLocalStorage: (key: string, value: string) => void;
removeDataFromLocalStorage: (key: string) => void;
getDataFromPlugin: <T>(key: string) => Promise<T | undefined>;
saveDataInPlugin: (data: Record<string, unknown>) => Promise<void>;
saveDataInPlugin: (oata: Record<string, unknown>) => Promise<void>;
setValueAndSaveInLocalStorage: <T>({
key,
value,
localStorageKey,
localStorageValue,
}: {
key: string;
value: T;
localStorageKey: string;
localStorageValue: string;
}) => void;
};
export const createCommonExplorerStore =
@ -38,11 +50,13 @@ export const createCommonExplorerStore =
viewMode: DEFAULT_VIEW_MODE,
changeViewMode: (mode: ViewMode) => {
const { saveDataInLocalStorage } = get();
set({
viewMode: mode,
const { setValueAndSaveInLocalStorage } = get();
setValueAndSaveInLocalStorage({
key: "viewMode",
value: mode,
localStorageKey: FFS_VIEW_MODE_KEY,
localStorageValue: mode,
});
saveDataInLocalStorage(FFS_VIEW_MODE_KEY, mode);
},
restoreViewMode: () => {
const { getDataFromLocalStorage } = get();
@ -80,4 +94,27 @@ export const createCommonExplorerStore =
return undefined;
}
},
setValueAndSaveInLocalStorage: <T>({
key,
value,
localStorageKey,
localStorageValue,
}: {
key: string;
value: T;
localStorageKey: string;
localStorageValue: string;
}) => {
const { saveDataInLocalStorage, removeDataFromLocalStorage } =
get();
set({ [key]: value } as Partial<ExplorerStore>);
if (value === null || value === undefined) {
removeDataFromLocalStorage(localStorageKey);
} else {
saveDataInLocalStorage(localStorageKey, localStorageValue);
}
},
});

View file

@ -47,16 +47,13 @@ export const createFocusedFileSlice =
},
setFocusedFile: async (file: TFile | null) => {
const { saveDataInLocalStorage, removeDataFromLocalStorage } =
get();
set({
focusedFile: file,
const { setValueAndSaveInLocalStorage } = get();
setValueAndSaveInLocalStorage({
key: "focusedFile",
value: file,
localStorageKey: FFS_FOCUSED_FILE_PATH_KEY,
localStorageValue: file ? file.path : "",
});
if (file) {
saveDataInLocalStorage(FFS_FOCUSED_FILE_PATH_KEY, file.path);
} else {
removeDataFromLocalStorage(FFS_FOCUSED_FILE_PATH_KEY);
}
},
restoreLastFocusedFile: async () => {

View file

@ -8,13 +8,13 @@ import { uniq } from "src/utils";
import { ExplorerStore } from "..";
export interface ToggleFolderSlice {
expandedFolderPaths: string[];
expandedFolderPaths: string[];
canFolderToggle: (folder: TFolder) => boolean;
changeExpandedFolderPaths: (folderNames: string[]) => Promise<void>;
restoreExpandedFolderPaths: () => Promise<void>;
expandFolder: (folder: TFolder) => Promise<void>;
collapseFolder: (folder: TFolder) => Promise<void>;
canFolderToggle: (folder: TFolder) => boolean;
changeExpandedFolderPaths: (folderNames: string[]) => Promise<void>;
restoreExpandedFolderPaths: () => Promise<void>;
expandFolder: (folder: TFolder) => Promise<void>;
collapseFolder: (folder: TFolder) => Promise<void>;
}
export const createToggleFolderSlice =
@ -53,14 +53,13 @@ export const createToggleFolderSlice =
);
},
changeExpandedFolderPaths: async (folderPaths: string[]) => {
const { saveDataInLocalStorage } = get();
set({
expandedFolderPaths: folderPaths,
const { setValueAndSaveInLocalStorage } = get();
setValueAndSaveInLocalStorage({
key: "expandedFolderPaths",
value: folderPaths,
localStorageKey: FFS_EXPANDED_FOLDER_PATHS_KEY,
localStorageValue: JSON.stringify(folderPaths),
});
saveDataInLocalStorage(
FFS_EXPANDED_FOLDER_PATHS_KEY,
JSON.stringify(folderPaths)
);
},
restoreExpandedFolderPaths: async () => {
const { getDataFromLocalStorage, hasFolderChildren } = get();

View file

@ -24,14 +24,13 @@ export const createToggleTagSlice =
expandedTagPaths: [],
changeExpandedTagPaths: async (tagPaths: string[]) => {
const { saveDataInLocalStorage } = get();
set({
expandedTagPaths: tagPaths,
const { setValueAndSaveInLocalStorage } = get();
setValueAndSaveInLocalStorage({
key: "expandedTagPaths",
value: tagPaths,
localStorageKey: FFS_EXPANDED_TAG_PATHS_KEY,
localStorageValue: JSON.stringify(tagPaths),
});
saveDataInLocalStorage(
FFS_EXPANDED_TAG_PATHS_KEY,
JSON.stringify(tagPaths)
);
},
expandTag: async (tag: TagNode) => {