From 64351dd304ed1430a592d1a815fc8815fd5c93ce Mon Sep 17 00:00:00 2001 From: Aman Harwara Date: Wed, 3 Jan 2024 22:56:01 +0530 Subject: [PATCH] chore: fix issue with downloading multiple files on macOS --- ...ess-npm-2020.9.6-97b11f6f2d-2dbf33ee55.zip | Bin 6209 -> 0 bytes ...ss-npm-2023.10.4-96a8d75efc-bfbadfbddc.zip | Bin 0 -> 6199 bytes packages/filepicker/package.json | 2 +- .../src/Streaming/StreamingSaver.ts | 10 ++-- packages/web/package.json | 2 +- .../PopoverFileItemAction.tsx | 1 + .../Controllers/FilesController.ts | 45 ++++++++++++++---- yarn.lock | 12 ++--- 8 files changed, 52 insertions(+), 20 deletions(-) delete mode 100644 .yarn/cache/@types-wicg-file-system-access-npm-2020.9.6-97b11f6f2d-2dbf33ee55.zip create mode 100644 .yarn/cache/@types-wicg-file-system-access-npm-2023.10.4-96a8d75efc-bfbadfbddc.zip diff --git a/.yarn/cache/@types-wicg-file-system-access-npm-2020.9.6-97b11f6f2d-2dbf33ee55.zip b/.yarn/cache/@types-wicg-file-system-access-npm-2020.9.6-97b11f6f2d-2dbf33ee55.zip deleted file mode 100644 index 5cdc98ab617e10d561396531ac7b0c9fb1f439dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6209 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 gr1}fr-|7Ft|L^yO^pF diff --git a/.yarn/cache/@types-wicg-file-system-access-npm-2023.10.4-96a8d75efc-bfbadfbddc.zip b/.yarn/cache/@types-wicg-file-system-access-npm-2023.10.4-96a8d75efc-bfbadfbddc.zip new file mode 100644 index 0000000000000000000000000000000000000000..6b2591c5ed904c9855d6c20065c7038c92e57f44 GIT binary patch literal 6199 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 literal 0 HcmV?d00001 diff --git a/packages/filepicker/package.json b/packages/filepicker/package.json index 277e1e955..9c6ecd6c1 100644 --- a/packages/filepicker/package.json +++ b/packages/filepicker/package.json @@ -29,7 +29,7 @@ "@standardnotes/common": "^1.50.0", "@standardnotes/files": "workspace:*", "@standardnotes/utils": "workspace:*", - "@types/wicg-file-system-access": "^2020.9.5", + "@types/wicg-file-system-access": "^2023.10.4", "reflect-metadata": "^0.1.13" } } diff --git a/packages/filepicker/src/Streaming/StreamingSaver.ts b/packages/filepicker/src/Streaming/StreamingSaver.ts index 2036ce2d1..d7cf2f2d4 100644 --- a/packages/filepicker/src/Streaming/StreamingSaver.ts +++ b/packages/filepicker/src/Streaming/StreamingSaver.ts @@ -22,12 +22,14 @@ export class StreamingFileSaver { } /** This function must be called in response to a user interaction, otherwise, it will be rejected by the browser. */ - async selectFileToSaveTo(): Promise { + async selectFileToSaveTo(handle?: FileSystemFileHandle): Promise { this.log('Showing save file picker') - const downloadHandle = await window.showSaveFilePicker({ - suggestedName: this.name, - }) + const downloadHandle = handle + ? handle + : await window.showSaveFilePicker({ + suggestedName: this.name, + }) this.writableStream = await downloadHandle.createWritable() } diff --git a/packages/web/package.json b/packages/web/package.json index 4d854f43c..d5ad6cd71 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -59,7 +59,7 @@ "@types/jest": "^29.2.4", "@types/react": "^18.2.39", "@types/react-dom": "^18.2.17", - "@types/wicg-file-system-access": "^2020.9.5", + "@types/wicg-file-system-access": "^2023.10.4", "@zip.js/zip.js": "^2.6.60", "autoprefixer": "^10.4.13", "babel-loader": "^9.1.2", diff --git a/packages/web/src/javascripts/Components/AttachedFilesPopover/PopoverFileItemAction.tsx b/packages/web/src/javascripts/Components/AttachedFilesPopover/PopoverFileItemAction.tsx index f2a4a94e7..0ea3d33ee 100644 --- a/packages/web/src/javascripts/Components/AttachedFilesPopover/PopoverFileItemAction.tsx +++ b/packages/web/src/javascripts/Components/AttachedFilesPopover/PopoverFileItemAction.tsx @@ -18,6 +18,7 @@ export type FileItemAction = > payload: { file: FileItem + directoryHandle?: FileSystemDirectoryHandle } } | { diff --git a/packages/web/src/javascripts/Controllers/FilesController.ts b/packages/web/src/javascripts/Controllers/FilesController.ts index d1d8c51db..4be70f7ee 100644 --- a/packages/web/src/javascripts/Controllers/FilesController.ts +++ b/packages/web/src/javascripts/Controllers/FilesController.ts @@ -67,8 +67,8 @@ export class FilesController extends AbstractViewController { + private async downloadFile(file: FileItem, directoryHandle?: FileSystemDirectoryHandle): Promise { let downloadingToastId = '' let canShowProgressNotification = false @@ -298,12 +298,15 @@ export class FilesController extends AbstractViewController { - if (!this.shouldUseStreamingReader && this.maxFileSize && file.size >= this.maxFileSize) { + if (!this.shouldUseStreamingAPI && this.maxFileSize && file.size >= this.maxFileSize) { this.alerts .alert( `This file exceeds the limits supported in this browser. To upload files greater than ${ @@ -465,7 +468,7 @@ export class FilesController extends AbstractViewController { + if (!this.shouldUseStreamingAPI) { + return + } + + const directoryHandle = await window.showDirectoryPicker({ + startIn: 'downloads', + }) + + return directoryHandle + } + downloadFiles = async (files: FileItem[]) => { // macOS doesn't allow multiple calls to the filepicker at the // same time, so we need to iterate one by one if (this.platform === Platform.MacDesktop || this.platform === Platform.MacWeb) { + let directoryHandle: FileSystemDirectoryHandle | undefined + + if (files.length > 1) { + try { + directoryHandle = await this.getDirectoryHandleForDownloads() + } catch (error) { + if (error instanceof DOMException && error.name === 'AbortError') { + return + } + console.error(error) + } + } + for (const file of files) { await this.handleFileAction({ type: FileItemActionType.DownloadFile, payload: { file, + directoryHandle, }, }) } diff --git a/yarn.lock b/yarn.lock index a7debbcd5..a5d050fd9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6753,7 +6753,7 @@ __metadata: "@standardnotes/files": "workspace:*" "@standardnotes/utils": "workspace:*" "@types/jest": ^29.2.3 - "@types/wicg-file-system-access": ^2020.9.5 + "@types/wicg-file-system-access": ^2023.10.4 "@typescript-eslint/eslint-plugin": "*" eslint: "*" eslint-plugin-prettier: "*" @@ -7519,7 +7519,7 @@ __metadata: "@types/jest": ^29.2.4 "@types/react": ^18.2.39 "@types/react-dom": ^18.2.17 - "@types/wicg-file-system-access": ^2020.9.5 + "@types/wicg-file-system-access": ^2023.10.4 "@zip.js/zip.js": ^2.6.60 autoprefixer: ^10.4.13 babel-loader: ^9.1.2 @@ -8457,10 +8457,10 @@ __metadata: languageName: node linkType: hard -"@types/wicg-file-system-access@npm:^2020.9.5": - version: 2020.9.6 - resolution: "@types/wicg-file-system-access@npm:2020.9.6" - checksum: 2dbf33ee55684d4ed0607ae4b470e0147806b15ec047563c59d94e6ac13be7bed904cc7eece5e4be7c0d58a4de0b0635089f7cd5b7738372e436c760b0719241 +"@types/wicg-file-system-access@npm:^2023.10.4": + version: 2023.10.4 + resolution: "@types/wicg-file-system-access@npm:2023.10.4" + checksum: bfbadfbddcdf04f600e0bb1b3dfe8dd79661c987ded487c2ac03670932e4ab9cd277c8b98d6229d10a910cb149c1bf956f43f189c4349f1c1a97cff310154aeb languageName: node linkType: hard