diff --git a/web/src/api/tasks.ts b/web/src/api/tasks.ts index 3d5f43d..708357a 100644 --- a/web/src/api/tasks.ts +++ b/web/src/api/tasks.ts @@ -16,7 +16,7 @@ export type AutomationTaskUpdate = Partial; export const tasksApi = { list: () => request('/tasks/'), - create: (payload: AutomationTaskCreate) => request('/tasks', { method: 'POST', json: payload }), + create: (payload: AutomationTaskCreate) => request('/tasks/', { method: 'POST', json: payload }), update: (id: number, payload: AutomationTaskUpdate) => request(`/tasks/${id}`, { method: 'PUT', json: payload }), remove: (id: number) => request(`/tasks/${id}`, { method: 'DELETE' }), }; \ No newline at end of file diff --git a/web/src/pages/FileExplorerPage/FileExplorerPage.tsx b/web/src/pages/FileExplorerPage/FileExplorerPage.tsx index 0c4c58c..d3cc70e 100644 --- a/web/src/pages/FileExplorerPage/FileExplorerPage.tsx +++ b/web/src/pages/FileExplorerPage/FileExplorerPage.tsx @@ -29,7 +29,7 @@ const FileExplorerPage = memo(function FileExplorerPage() { // --- Hooks --- const { path, entries, loading, pagination, processorTypes, load, navigateTo, goUp, handlePaginationChange, refresh } = useFileExplorer(navKey); - const { selectedEntries, handleSelect, handleSelectRange, clearSelection } = useFileSelection(); + const { selectedEntries, handleSelect, handleSelectRange, clearSelection, setSelectedEntries } = useFileSelection(); const { uploading, fileInputRef, doCreateDir, doDelete, doRename, doDownload, doShare, handleUploadClick, handleFilesSelected } = useFileActions({ path, refresh, clearSelection, onShare: (entries) => setSharingEntries(entries) }); const { appWindows, openFileWithDefaultApp, confirmOpenWithApp, closeWindow, toggleMax, bringToFront, updateWindow } = useAppWindows(path); const { ctxMenu, blankCtxMenu, openContextMenu, openBlankContextMenu, closeContextMenus } = useContextMenu(); @@ -126,6 +126,7 @@ const FileExplorerPage = memo(function FileExplorerPage() { loading={loading} selectedEntries={selectedEntries} onRowClick={(r, e) => handleSelect(r, e.ctrlKey || e.metaKey)} + onSelectionChange={setSelectedEntries} onOpen={handleOpenEntry} onOpenWith={(entry, appKey) => confirmOpenWithApp(entry, { key: appKey, name: '' } as any)} onRename={setRenaming} diff --git a/web/src/pages/FileExplorerPage/components/FileListView.tsx b/web/src/pages/FileExplorerPage/components/FileListView.tsx index fa05f8f..1a832a1 100644 --- a/web/src/pages/FileExplorerPage/components/FileListView.tsx +++ b/web/src/pages/FileExplorerPage/components/FileListView.tsx @@ -10,6 +10,7 @@ interface FileListViewProps { loading: boolean; selectedEntries: string[]; onRowClick: (entry: VfsEntry, e: React.MouseEvent) => void; + onSelectionChange: (selectedKeys: string[]) => void; onOpen: (entry: VfsEntry) => void; onOpenWith: (entry: VfsEntry, appKey: string) => void; onRename: (entry: VfsEntry) => void; @@ -22,6 +23,7 @@ export const FileListView: React.FC = ({ loading, selectedEntries, onRowClick, + onSelectionChange, onOpen, onOpenWith, onRename, @@ -99,8 +101,7 @@ export const FileListView: React.FC = ({ rowClassName={(r) => selectedEntries.includes(r.name) ? 'row-selected' : ''} rowSelection={{ selectedRowKeys: selectedEntries, - onChange: () => { - } + onChange: (keys) => onSelectionChange(keys as string[]), }} /> );