diff options
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/files-app.js')
| -rw-r--r-- | packages/meshbay-hub/src/meshbay_hub/static/files-app.js | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/files-app.js b/packages/meshbay-hub/src/meshbay_hub/static/files-app.js index 56311ae..6825c8d 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/files-app.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/files-app.js @@ -26,7 +26,7 @@ import { function FilesPanel({ groupId, transportRef, gekRef, status, entries, nodeDirs, nodeRoots, setEntries, setNodeDirs, setNodeRoots, applyIndex, - isNodeAdmin, operatorPaired, mayUpload, userId, setError, onPreview, + isNodeAdmin, operatorPaired, userId, setError, onPreview, showGroup, readOnly, getTransport, onRefreshIndex, showRefresh, }) { const [selected, setSelected] = useState(() => new Set()); @@ -75,6 +75,12 @@ function FilesPanel({ e.target.value = ''; const transport = transportRef.current; if (!files.length || !transport || !transport.connected) return; + // The root being browsed is the destination. A group can have several + // writable roots, so leaving the node to pick one means a file uploaded + // from a folder the operator is looking at lands in a different one — + // which is only noticed much later, if at all. + const uploadRoot = currentPath ? currentPath.split('/')[0] : ''; + if (!uploadRoot) return; setError(''); for (const file of files) { @@ -85,6 +91,7 @@ function FilesPanel({ // Bytes the node acknowledged, not bytes read locally. onProgress: (sent) => onProgress(sent, file.size), signal, + root: uploadRoot, }); // The node re-indexes on a filesystem event, so there is nothing to // wait on but the clock. Refreshing here means the file appears in @@ -94,7 +101,7 @@ function FilesPanel({ }, }); } - }, [applyIndex]); + }, [applyIndex, currentPath]); const makeDirectory = useCallback(async () => { const transport = transportRef.current; |