admin/fs: file-picker remembers last folder
Massimo Melina committed
Nov 29, 2023 at 23:36 UTC
c2bdf452165ce315f8710f71c54f1431e9a3f6b5
1 file changed
+7
-5
admin/src/addFiles.ts
+7
-5
@@ -9,22 +9,24 @@ import { apiCall } from './api'
9
import FilePicker from './FilePicker'
10
import { focusSelector } from '@hfs/shared'
11
12
+let lastFolder: undefined | string
13
export default function addFiles() {
14
const { close } = newDialog({
15
title: "Add files or folders",
16
dialogProps: { sx:{ minWidth: 'min(90vw, 40em)', minHeight: 'calc(100vh - 9em)' } },
17
Content() {
17
- const parent = getParent()
18
+ const parent = getFolderFromSelected()
19
return h(Fragment, {},
20
h(Box, { sx:{ typography: 'body1', px: 1, py: 2 } },
21
"Selected elements will be added under ",
22
parent.isRoot ? h('i', {}, "Home") : decodeURI(parent.id)
23
),
24
h(FilePicker, {
24
- from: parent.source,
25
+ from: lastFolder ?? parent.source,
26
async onSelect(sel) {
27
const res = await Promise.all(sel.map(source =>
28
apiCall('add_vfs', { parent: parent.id, source }).then(r => r, e => [source, e.message])))
29
+ lastFolder = sel[0].slice(0, sel[0].lastIndexOf('/'))
30
const errs = res.filter(Array.isArray)
31
if (errs.length)
32
await alertDialog(h(Box, {},
@@ -48,7 +50,7 @@ export async function addVirtual() {
50
try {
51
const name = await promptDialog("Enter folder name")
52
if (!name) return
51
- const { id: parent } = getParent()
53
+ const { id: parent } = getFolderFromSelected()
54
const res = await apiCall('add_vfs', { parent, name })
55
reloadVfs([ parent + encodeURI(res.name) + '/' ])
56
await alertDialog(`Folder "${res.name}" created`, 'success')
@@ -60,7 +62,7 @@ export async function addVirtual() {
62
63
export async function addLink() {
64
try {
63
- const { id: parent } = getParent()
65
+ const { id: parent } = getFolderFromSelected()
66
const res = await apiCall('add_vfs', { parent, name: 'new link', url: 'https://google.com' })
67
reloadVfs([ parent + encodeURI(res.name) ])
68
toast("Link created", 'success', {
@@ -72,7 +74,7 @@ export async function addLink() {
74
}
75
}
76
75
-function getParent() {
77
+function getFolderFromSelected() {
78
const f = state.selectedFiles[0] || state.vfs
79
return f.type === 'folder' ? f : f.parent!
80
}