fix closing a directory

This commit is contained in:
Chris Kruining 2025-01-07 08:27:33 +01:00
parent cc8c3f8ad6
commit 79f2974c39
No known key found for this signature in database
GPG key ID: EB894A3560CCCAD2
2 changed files with 9 additions and 2 deletions

View file

@ -30,7 +30,8 @@ interface FilesContextType {
readonly root: Accessor<FileSystemDirectoryHandle | undefined>, readonly root: Accessor<FileSystemDirectoryHandle | undefined>,
readonly loading: Accessor<boolean>, readonly loading: Accessor<boolean>,
open(directory: FileSystemDirectoryHandle): void; open(directory: FileSystemDirectoryHandle): Promise<void>;
close(): Promise<void>;
get(key: string): Accessor<FileSystemDirectoryHandle | undefined> get(key: string): Accessor<FileSystemDirectoryHandle | undefined>
set(key: string, handle: FileSystemDirectoryHandle): Promise<void>; set(key: string, handle: FileSystemDirectoryHandle): Promise<void>;
remove(key: string): Promise<void>; remove(key: string): Promise<void>;
@ -140,6 +141,12 @@ export const FilesProvider: ParentComponent = (props) => {
await internal.set(ROOT, directory); await internal.set(ROOT, directory);
}, },
async close() {
setState('root', undefined);
await internal.remove(ROOT);
},
get(key: string): Accessor<FileSystemDirectoryHandle | undefined> { get(key: string): Accessor<FileSystemDirectoryHandle | undefined> {
return createMemo(() => state.openedFiles.find(entity => entity.key === key)?.handle); return createMemo(() => state.openedFiles.find(entity => entity.key === key)?.handle);
}, },

View file

@ -242,7 +242,7 @@ const Editor: Component<{ root: FileSystemDirectoryHandle }> = (props) => {
await filesContext.open(directory); await filesContext.open(directory);
}, { key: 'o', modifier: Modifier.Control }), }, { key: 'o', modifier: Modifier.Control }),
close: createCommand('page.edit.command.close', async () => { close: createCommand('page.edit.command.close', async () => {
filesContext.remove('__root__'); await filesContext.close();
}), }),
closeTab: createCommand('page.edit.command.closeTab', async (id: string) => { closeTab: createCommand('page.edit.command.closeTab', async (id: string) => {
filesContext.remove(id); filesContext.remove(id);