From ca2e2635a8f7340f570001b80a6d09e7b0c6a9b6 Mon Sep 17 00:00:00 2001 From: Emma Date: Wed, 29 Jan 2025 02:44:31 -0500 Subject: [PATCH] =?UTF-8?q?Move=20the=20`IS=5FANDROID`=20check=20in=20the?= =?UTF-8?q?=20`withPicker`=20functions=20up=20=F0=9F=AB=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (technically `showPicker` functions are defined, but i don't wanna implement them on the kt side atm) --- src/renderer/helpers/utils.js | 46 +++++++++++++++++------------------ 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/renderer/helpers/utils.js b/src/renderer/helpers/utils.js index 7ed88b72955d0..de0e9019549da 100644 --- a/src/renderer/helpers/utils.js +++ b/src/renderer/helpers/utils.js @@ -262,11 +262,25 @@ export async function readFileWithPicker( ) { let file + if (process.env.IS_ANDROID) { + const extensions = [] + const values = Object.values(acceptedTypes) + for (const value of values) { + if (Array.isArray(value)) { + extensions.push(...value.map(extension => extension.substring(1))) + } else { + extensions.push(value.substring(1)) + } + } + const dialogResponse = await requestOpenDialog(extensions) + if (!dialogResponse.canceled) { + file = dialogResponse + } // Only supported in Electron and desktop Chromium browsers // https://developer.mozilla.org/en-US/docs/Web/API/Window/showOpenFilePicker#browser_compatibility // As we know it is supported in Electron, adding the build flag means we can skip the runtime check in Electron // and allow terser to remove the unused else block - if (process.env.IS_ELECTRON || 'showOpenFilePicker' in window) { + } else if (process.env.IS_ELECTRON || 'showOpenFilePicker' in window) { try { /** @type {FileSystemFileHandle[]} */ const [handle] = await window.showOpenFilePicker({ @@ -289,20 +303,6 @@ export async function readFileWithPicker( throw error } - } else if (process.env.IS_ANDROID) { - const extensions = [] - const values = Object.values(acceptedTypes) - for (const value of values) { - if (Array.isArray(value)) { - extensions.push(...value.map(extension => extension.substring(1))) - } else { - extensions.push(value.substring(1)) - } - } - const dialogResponse = await requestOpenDialog(extensions) - if (!dialogResponse.canceled) { - file = dialogResponse - } } else { /** @type {File|null} */ const fallbackFile = await new Promise((resolve) => { @@ -364,11 +364,18 @@ export async function writeFileWithPicker( rememberDirectoryId, startInDirectory ) { + if (process.env.IS_ANDROID) { + const response = await requestSaveDialog(fileName, 'application/octet-stream') + if (!response.canceled) { + await writeFile(response.uri, content) + return true + } + return false // Only supported in Electron and desktop Chromium browsers // https://developer.mozilla.org/en-US/docs/Web/API/Window/showOpenFilePicker#browser_compatibility // As we know it is supported in Electron, adding the build flag means we can skip the runtime check in Electron // and allow terser to remove the unused else block - if (process.env.IS_ELECTRON || 'showSaveFilePicker' in window) { + } else if (process.env.IS_ELECTRON || 'showSaveFilePicker' in window) { let writableFileStream try { @@ -403,13 +410,6 @@ export async function writeFileWithPicker( } return true - } else if (process.env.IS_ANDROID) { - const response = await requestSaveDialog(fileName, 'application/octet-stream') - if (!response.canceled) { - await writeFile(response.uri, content) - return true - } - return false } else { if (typeof content === 'string') { content = new Blob([content], { type: mimeType })