diff --git a/src/components/SideNavigator/SideNavigator.tsx b/src/components/SideNavigator/SideNavigator.tsx index 9539409ba4..87effb833a 100644 --- a/src/components/SideNavigator/SideNavigator.tsx +++ b/src/components/SideNavigator/SideNavigator.tsx @@ -31,6 +31,7 @@ import { IconBook, IconStarActive } from '../icons' +import { getStorageItemId } from '../../lib/nav' const Description = styled.nav` margin-left: 15px; @@ -212,7 +213,7 @@ export default () => {
{storageEntries.map(([, storage]) => { - const itemId = `storage:${storage.id}` + const itemId = getStorageItemId(storage.id) const storageIsFolded = !sideNavOpenedItemSet.has(itemId) const showPromptToCreateFolder = (folderPathname: string) => { prompt({ diff --git a/src/lib/generalStatus.ts b/src/lib/generalStatus.ts index 3d73f45783..8105000d59 100644 --- a/src/lib/generalStatus.ts +++ b/src/lib/generalStatus.ts @@ -3,7 +3,7 @@ import { localLiteStorage } from 'ltstrg' import { useSetState } from 'react-use' import { generalStatusKey } from './localStorageKeys' import { createStoreContext } from './context' -import { getFolderItemId } from './nav' +import { getFolderItemId, getStorageItemId } from './nav' export type ViewModeType = 'edit' | 'preview' | 'split' @@ -91,6 +91,7 @@ function useGeneralStatusStore() { const folderPathElements = folderPathname.slice(1).split('/') const itemIdListToOpen = [] let currentPathname = '' + itemIdListToOpen.push(getStorageItemId(storageId)) for (const element of folderPathElements) { currentPathname = `${currentPathname}/${element}` itemIdListToOpen.push(getFolderItemId(storageId, currentPathname)) diff --git a/src/lib/nav.ts b/src/lib/nav.ts index e3cbecdef9..e76540c420 100644 --- a/src/lib/nav.ts +++ b/src/lib/nav.ts @@ -1,7 +1,11 @@ +export function getStorageItemId(storageId: string) { + return `storage:${storageId}` +} + export function getFolderItemId(storageId: string, folderPathname: string) { - return `storage:${storageId}/folder:${folderPathname}` + return `${getStorageItemId(storageId)}/folder:${folderPathname}` } export function getTagListItemId(storageId: string) { - return `storage:${storageId}/tags` + return `${getStorageItemId(storageId)}/tags` } diff --git a/src/lib/specs/nav.spec.ts b/src/lib/specs/nav.spec.ts new file mode 100644 index 0000000000..eb36863f37 --- /dev/null +++ b/src/lib/specs/nav.spec.ts @@ -0,0 +1,21 @@ +import { getStorageItemId, getFolderItemId, getTagListItemId } from '../nav' + +describe('getStorageItemId', () => { + it('returns a correct storage path', () => { + expect(getStorageItemId('test_storage')).toBe('storage:test_storage') + }) +}) + +describe('getFolderItemId', () => { + it('returns a correct folder item path', () => { + expect(getFolderItemId('test_storage', 'test_folder')).toBe( + 'storage:test_storage/folder:test_folder' + ) + }) +}) + +describe('getTagListItemId', () => { + it('returns a correct tags path', () => { + expect(getTagListItemId('test_storage')).toBe('storage:test_storage/tags') + }) +})