store filemanager state in localstorage

This commit is contained in:
Qing
2023-03-21 12:31:31 +08:00
parent 1bb25bebe6
commit c33b7c201e
3 changed files with 89 additions and 22 deletions

View File

@@ -685,3 +685,59 @@ export const isDiffusionModelsState = selector({
return isSD || isPaintByExample || isPix2Pix
},
})
export enum SortBy {
NAME = 'name',
CTIME = 'ctime',
MTIME = 'mtime',
}
export enum SortOrder {
DESCENDING = 'desc',
ASCENDING = 'asc',
}
interface FileManagerState {
sortBy: SortBy
sortOrder: SortOrder
layout: 'rows' | 'masonry'
}
const FILE_MANAGER_STATE_KEY = 'fileManagerState'
export const fileManagerState = atom<FileManagerState>({
key: FILE_MANAGER_STATE_KEY,
default: {
sortBy: SortBy.CTIME,
sortOrder: SortOrder.DESCENDING,
layout: 'masonry',
},
effects: [localStorageEffect(FILE_MANAGER_STATE_KEY)],
})
export const fileManagerSortBy = selector({
key: 'fileManagerSortBy',
get: ({ get }) => get(fileManagerState).sortBy,
set: ({ get, set }, newValue: any) => {
const val = get(fileManagerState)
set(fileManagerState, { ...val, sortBy: newValue })
},
})
export const fileManagerSortOrder = selector({
key: 'fileManagerSortOrder',
get: ({ get }) => get(fileManagerState).sortOrder,
set: ({ get, set }, newValue: any) => {
const val = get(fileManagerState)
set(fileManagerState, { ...val, sortOrder: newValue })
},
})
export const fileManagerLayout = selector({
key: 'fileManagerLayout',
get: ({ get }) => get(fileManagerState).layout,
set: ({ get, set }, newValue: any) => {
const val = get(fileManagerState)
set(fileManagerState, { ...val, layout: newValue })
},
})