diff --git a/src/api/socketActions.ts b/src/api/socketActions.ts index 380082b528..50f077311f 100644 --- a/src/api/socketActions.ts +++ b/src/api/socketActions.ts @@ -573,23 +573,27 @@ export const SocketActions = { * Expects the full path including root. * Optionally pass the just the filename and path. */ - async serverFilesMetadata (filepath: string) { + async serverFilesMetadata (filename: string) { + const wait = `${Waits.onFileSystem}/gcodes/${filename}` baseEmit( 'server.files.metadata', { dispatch: 'files/onFileMetaData', + wait, params: { - filename: filepath + filename } } ) }, - async serverFilesMetascan (filepath: string) { + async serverFilesMetascan (filename: string) { + const wait = `${Waits.onFileSystem}/gcodes/${filename}` baseEmit( 'server.files.metascan', { dispatch: 'files/onFileMetaData', + wait, params: { - filename: filepath + filename } } ) @@ -689,7 +693,7 @@ export const SocketActions = { }, async serverFilesDeleteFile (path: string) { - const wait = `${Waits.onFileSystem}/${path}/` + const wait = `${Waits.onFileSystem}/${path}` baseEmit( 'server.files.delete_file', { dispatch: 'void', @@ -789,6 +793,7 @@ export const SocketActions = { }, async serverAnalysisEstimate (filename: string, estimator_config?: string, update_metadata?: boolean) { + const wait = `${Waits.onFileSystem}/gcodes/${filename}` baseEmit( 'server.analysis.estimate', { params: { @@ -796,6 +801,7 @@ export const SocketActions = { estimator_config, update_metadata }, + wait, dispatch: 'analysis/onAnalysisEstimate' } ) diff --git a/src/components/widgets/filesystem/FileSystem.vue b/src/components/widgets/filesystem/FileSystem.vue index bcd9481a52..68c38e1cda 100644 --- a/src/components/widgets/filesystem/FileSystem.vue +++ b/src/components/widgets/filesystem/FileSystem.vue @@ -31,9 +31,12 @@ v-if="selected.length > 0" :root="currentRoot" :path="visiblePath" - @remove="handleRemove(selected)" - @create-zip="handleCreateZip(selected)" - @enqueue="handleEnqueue(selected)" + :selected="selected" + @remove="handleRemove" + @create-zip="handleCreateZip" + @refresh-metadata="handleRefreshMetadata" + @perform-time-analysis="handlePerformTimeAnalysis" + @enqueue="handleEnqueue" /> item.type === 'file' && this.rootProperties.accepts.includes(item.extension)) + .map(file => file.path ? `${file.path}/${file.filename}` : file.filename) - SocketActions.serverFilesMetadata(filename) + for (const filename of filenames) { + SocketActions.serverFilesMetascan(filename) + } } - handlePerformTimeAnalysis (file: AppFileWithMeta) { - const filename = file.path ? `${file.path}/${file.filename}` : file.filename + handlePerformTimeAnalysis (file: FileBrowserEntry | FileBrowserEntry[]) { + const items = Array.isArray(file) + ? file + : [file] + const filenames = items + .filter((item): item is AppFileWithMeta => item.type === 'file' && this.rootProperties.accepts.includes(item.extension)) + .map(file => file.path ? `${file.path}/${file.filename}` : file.filename) - SocketActions.serverAnalysisEstimate(filename, undefined, true) + for (const filename of filenames) { + SocketActions.serverAnalysisEstimate(filename, undefined, true) + } } async handleViewThumbnail (file: AppFileWithMeta) { @@ -887,13 +906,13 @@ export default class FileSystem extends Mixins(StateMixin, FilesMixin, ServicesM this.includeTimelapseThumbnailFiles(items) } - items.forEach((item) => { + for (const item of items) { const src = `${this.currentPath}/${item.name}` const dest = destinationPath ? `${destinationPath}/${item.name}` : `${item.name}` SocketActions.serverFilesMove(src, dest) - }) + } } handleDragStart (item: FileBrowserEntry, items: FileBrowserEntry[], dataTransfer: DataTransfer) { @@ -954,10 +973,13 @@ export default class FileSystem extends Mixins(StateMixin, FilesMixin, ServicesM this.includeTimelapseThumbnailFiles(items) } - items.forEach((item) => { - if (item.type === 'directory') SocketActions.serverFilesDeleteDirectory(`${this.currentPath}/${item.dirname}`, true) - if (item.type === 'file') SocketActions.serverFilesDeleteFile(`${this.currentPath}/${item.filename}`) - }) + for (const item of items) { + if (item.type === 'file') { + SocketActions.serverFilesDeleteFile(`${this.currentPath}/${item.filename}`) + } else { + SocketActions.serverFilesDeleteDirectory(`${this.currentPath}/${item.dirname}`, true) + } + } } } diff --git a/src/components/widgets/filesystem/FileSystemBulkActions.vue b/src/components/widgets/filesystem/FileSystemBulkActions.vue index 81c7a806a4..e191b01b2e 100644 --- a/src/components/widgets/filesystem/FileSystemBulkActions.vue +++ b/src/components/widgets/filesystem/FileSystemBulkActions.vue @@ -11,7 +11,7 @@