From c767fe1b82f78cb8dae9e66727deee68a83bf150 Mon Sep 17 00:00:00 2001 From: purocean Date: Fri, 18 Apr 2025 19:13:13 +0800 Subject: [PATCH] fix: https://github.com/purocean/yn/issues/397 --- src/renderer/services/document.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/renderer/services/document.ts b/src/renderer/services/document.ts index 537621e3..39ecf4ec 100644 --- a/src/renderer/services/document.ts +++ b/src/renderer/services/document.ts @@ -722,18 +722,21 @@ export async function ensureCurrentFileSaved () { } } - const confirm = await useModal().confirm({ + const saveConfirmResolvers = Promise.withResolvers() + const confirmPromise = useModal().confirm({ title: t('save-check-dialog.title'), content: t('save-check-dialog.desc'), action: h(Fragment, [ h('button', { onClick: async () => { - await saveContent().catch(error => { + try { + await saveContent() + saveConfirmResolvers.resolve(true) + } catch (error: any) { + logger.error('saveDoc', error) useToast().show('warning', error.message) - throw error - }) - - useModal().ok() + saveConfirmResolvers.resolve(false) + } } }, t('save')), h('button', { @@ -747,6 +750,8 @@ export async function ensureCurrentFileSaved () { checkFile() + const confirm = await Promise.race([confirmPromise, saveConfirmResolvers.promise]) + if (confirm) { if (!store.getters.isSaved && currentFile.content) { store.state.currentContent = currentFile.content!