From 233baf78ce75470a8a5bacded079b70b2f072d0c Mon Sep 17 00:00:00 2001 From: Abdullah Atta Date: Tue, 19 Dec 2023 14:39:45 +0500 Subject: [PATCH] web: handle file picker dialog cancelation --- apps/web/src/common/index.ts | 3 ++- apps/web/src/dialogs/settings/backup-export-settings.ts | 5 +++-- apps/web/src/utils/file-picker.ts | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/web/src/common/index.ts b/apps/web/src/common/index.ts index 9fbcb7f5e..46dda2b8b 100644 --- a/apps/web/src/common/index.ts +++ b/apps/web/src/common/index.ts @@ -138,8 +138,9 @@ export async function selectBackupFile() { export async function importBackup() { const backupFile = await selectBackupFile(); - if (!backupFile) return; + if (!backupFile) return false; await restoreBackupFile(backupFile); + return true; } export async function restoreBackupFile(backupFile: File) { diff --git a/apps/web/src/dialogs/settings/backup-export-settings.ts b/apps/web/src/dialogs/settings/backup-export-settings.ts index c008168da..6e3f05006 100644 --- a/apps/web/src/dialogs/settings/backup-export-settings.ts +++ b/apps/web/src/dialogs/settings/backup-export-settings.ts @@ -67,8 +67,9 @@ export const BackupExportSettings: SettingsGroup[] = [ type: "button", title: "Restore", action: async () => { - await importBackup(); - await useAppStore.getState().refresh(); + if (await importBackup()) { + await useAppStore.getState().refresh(); + } }, variant: "secondary" } diff --git a/apps/web/src/utils/file-picker.ts b/apps/web/src/utils/file-picker.ts index 840d47924..6b94e0dab 100644 --- a/apps/web/src/utils/file-picker.ts +++ b/apps/web/src/utils/file-picker.ts @@ -30,6 +30,9 @@ export function showFilePicker({ input.setAttribute("type", "file"); input.setAttribute("accept", acceptedFileTypes); input.dispatchEvent(new MouseEvent("click")); + input.oncancel = async function () { + resolve(undefined); + }; input.onchange = async function () { if (!input.files) return resolve(undefined); const file = input.files[0];