diff --git a/filemanager/package-lock.json b/filemanager/package-lock.json index 93873fb22..6b08df7d1 100644 --- a/filemanager/package-lock.json +++ b/filemanager/package-lock.json @@ -11,7 +11,7 @@ "@fontsource/noto-sans": "^5.0.3", "combokeys": "^3.0.1", "filesize": "^10.0.7", - "pankow": "^0.2.7", + "pankow": "^0.2.8", "primeicons": "^6.0.1", "primevue": "^3.29.2", "superagent": "^8.0.9", @@ -916,9 +916,9 @@ } }, "node_modules/pankow": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/pankow/-/pankow-0.2.7.tgz", - "integrity": "sha512-orEyUk2dGs9l/MVHcI/jOBQa5lJr9gb5zaxLcV8wleO2CzBC73vijbF02xhUwOPHuQa63QZKnKf2KjC0EsrxwQ==", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/pankow/-/pankow-0.2.8.tgz", + "integrity": "sha512-gjpmc15/VCfvvbS01O6UAOWCkAxBokTb/TmdlYf/bXziKyy+tKEhSXRfKtIjIzq1clksIdIHGSBiIK5Og2bUjg==", "dependencies": { "filesize": "^10.0.7", "monaco-editor": "^0.38.0", diff --git a/filemanager/package.json b/filemanager/package.json index 6c097834b..b33d327ec 100644 --- a/filemanager/package.json +++ b/filemanager/package.json @@ -12,7 +12,7 @@ "@fontsource/noto-sans": "^5.0.3", "combokeys": "^3.0.1", "filesize": "^10.0.7", - "pankow": "^0.2.7", + "pankow": "^0.2.8", "primeicons": "^6.0.1", "primevue": "^3.29.2", "superagent": "^8.0.9", diff --git a/filemanager/src/models/DirectoryModel.js b/filemanager/src/models/DirectoryModel.js index 9f7bf986b..2fb3ba23f 100644 --- a/filemanager/src/models/DirectoryModel.js +++ b/filemanager/src/models/DirectoryModel.js @@ -84,6 +84,14 @@ export function createDirectoryModel(origin, accessToken, api) { .send({ action: 'chown', uid: uid, recursive: true }) .query({ access_token: accessToken }); }, + async extract(path) { + await superagent.put(`${origin}/api/v1/${api}/files/${path}`) + .send({ action: 'extract' }) + .query({ access_token: accessToken }); + }, + async download(path) { + window.open(`${origin}/api/v1/${api}/files/${path}?download=true&access_token=${accessToken}`); + }, async save(filePath, content) { const file = new File([content], 'file'); await superagent.post(`${origin}/api/v1/${api}/files/${filePath}`) diff --git a/filemanager/src/views/Home.vue b/filemanager/src/views/Home.vue index 9dce9d414..4f0d34cf4 100644 --- a/filemanager/src/views/Home.vue +++ b/filemanager/src/views/Home.vue @@ -62,6 +62,8 @@ :copy-handler="copyHandler" :cut-handler="cutHandler" :paste-handler="pasteHandler" + :download-handler="downloadHandler" + :extract-handler="extractHandler" :new-file-handler="onNewFile" :new-folder-handler="onNewFolder" :upload-file-handler="onUploadFile" @@ -348,6 +350,12 @@ export default { this.clipboard = {}; await this.loadCwd(); }, + async downloadHandler(file) { + await this.directoryModel.download(buildFilePath(this.cwd, file.name)); + }, + async extractHandler(file) { + await this.directoryModel.extract(buildFilePath(this.cwd, file.name)); + }, async uploadHandler(targetDir, file, progressHandler) { await this.directoryModel.upload(targetDir, file, progressHandler); await this.loadCwd();