refactor(dev-only): use file view display prefs for files table

This commit is contained in:
Aman Harwara
2022-12-28 00:49:09 +05:30
parent ccb15faff5
commit 2b63484758

View File

@@ -12,6 +12,7 @@ import {
ApplicationEvent, ApplicationEvent,
naturalSort, naturalSort,
FileBackupRecord, FileBackupRecord,
SystemViewId,
} from '@standardnotes/snjs' } from '@standardnotes/snjs'
import { useState, useEffect, useCallback, useMemo, useRef } from 'react' import { useState, useEffect, useCallback, useMemo, useRef } from 'react'
import { FileItemActionType } from '../AttachedFilesPopover/PopoverFileItemAction' import { FileItemActionType } from '../AttachedFilesPopover/PopoverFileItemAction'
@@ -166,26 +167,46 @@ const FilesTableView = ({ application, filesController, featuresController, link
.getDisplayableNotesAndFiles() .getDisplayableNotesAndFiles()
.filter((item) => item.content_type === ContentType.File) as FileItem[] .filter((item) => item.content_type === ContentType.File) as FileItem[]
const [sortBy, setSortBy] = useState<keyof SortableItem>( const getSortByPreference = useCallback(() => {
application.getPreference(PrefKey.SortNotesBy, PrefDefaults[PrefKey.SortNotesBy]), const globalPrefValue = application.getPreference(PrefKey.SortNotesBy, PrefDefaults[PrefKey.SortNotesBy])
) const filesViewPrefValue = application.getPreference(PrefKey.SystemViewPreferences)?.[SystemViewId.Files]?.sortBy
const [sortReversed, setSortReversed] = useState(
application.getPreference(PrefKey.SortNotesReverse, PrefDefaults[PrefKey.SortNotesReverse]), return filesViewPrefValue ?? globalPrefValue
) }, [application])
const getSortReversedPreference = useCallback(() => {
const globalPrefValue = application.getPreference(PrefKey.SortNotesReverse, PrefDefaults[PrefKey.SortNotesReverse])
const filesViewPrefValue = application.getPreference(PrefKey.SystemViewPreferences)?.[SystemViewId.Files]
?.sortReverse
return filesViewPrefValue ?? globalPrefValue
}, [application])
const [sortBy, setSortBy] = useState<keyof SortableItem>(() => getSortByPreference())
const [sortReversed, setSortReversed] = useState(() => getSortReversedPreference())
useEffect(() => { useEffect(() => {
return application.addEventObserver(async (event) => { return application.addEventObserver(async (event) => {
if (event === ApplicationEvent.PreferencesChanged) { if (event === ApplicationEvent.PreferencesChanged) {
setSortBy(application.getPreference(PrefKey.SortNotesBy, PrefDefaults[PrefKey.SortNotesBy])) setSortBy(getSortByPreference())
setSortReversed(application.getPreference(PrefKey.SortNotesReverse, PrefDefaults[PrefKey.SortNotesReverse])) setSortReversed(getSortReversedPreference())
} }
}) })
}, [application]) }, [application, getSortByPreference, getSortReversedPreference])
const onSortChange = useCallback( const onSortChange = useCallback(
async (sortBy: keyof SortableItem, sortReversed: boolean) => { async (sortBy: keyof SortableItem, sortReversed: boolean) => {
await application.setPreference(PrefKey.SortNotesBy, sortBy) const systemViewPreferences = application.getPreference(PrefKey.SystemViewPreferences) || {}
await application.setPreference(PrefKey.SortNotesReverse, sortReversed) const filesViewPreferences = systemViewPreferences[SystemViewId.Files] || {}
await application.setPreference(PrefKey.SystemViewPreferences, {
...systemViewPreferences,
[SystemViewId.Files]: {
...filesViewPreferences,
sortBy,
sortReverse: sortReversed,
},
})
}, },
[application], [application],
) )