66import type { Folder , Node } from '@nextcloud/files'
77import type { FileSource , PathOptions , PathsStore , Service , ServicesState } from '../types.ts'
88
9+ import { getBuilder } from '@nextcloud/browser-storage'
910import { subscribe } from '@nextcloud/event-bus'
1011import { File , FileType , getNavigation } from '@nextcloud/files'
1112import { dirname } from '@nextcloud/paths'
@@ -14,10 +15,8 @@ import Vue from 'vue'
1415import logger from '../logger.ts'
1516import { useFilesStore } from './files.ts'
1617
17- /**
18- *
19- * @param args
20- */
18+ const browserStorage = getBuilder ( 'files' ) . build ( )
19+
2120export function usePathsStore ( ...args ) {
2221 const files = useFilesStore ( ...args )
2322
@@ -164,8 +163,32 @@ export function usePathsStore(...args) {
164163 subscribe ( 'files:node:deleted' , pathsStore . onDeletedNode )
165164 subscribe ( 'files:node:moved' , pathsStore . onMovedNode )
166165
166+ // Restore from browser storage
167+ if ( browserStorage . getItem ( 'paths' ) ) {
168+ try {
169+ const data = browserStorage . getItem ( 'paths' )
170+ if ( ! data ) {
171+ throw new Error ( 'No data found in browser storage for paths' )
172+ }
173+
174+ const storedPaths = JSON . parse ( data ) as ServicesState
175+ pathsStore . $state . paths = storedPaths || { }
176+ logger . info ( 'Restored paths store from browser storage' , { storedPaths } )
177+ } catch ( e ) {
178+ logger . info ( 'Failed to restore paths store from browser storage' , { error : e } )
179+ }
180+ }
181+
167182 pathsStore . _initialized = true
168183 }
169184
185+ pathsStore . $subscribe ( ( _mutation , state : PathsStore ) => {
186+ try {
187+ browserStorage . setItem ( 'paths' , JSON . stringify ( state . paths ) )
188+ } catch ( e ) {
189+ logger . error ( 'Failed to persist paths store to browser storage' , { error : e } )
190+ }
191+ } )
192+
170193 return pathsStore
171194}
0 commit comments