From 572cfbc7909e5fde766846408198d57f253fe30c Mon Sep 17 00:00:00 2001 From: friebetill Date: Sat, 4 Feb 2023 09:51:46 +0800 Subject: [PATCH] Wait for the dispatch event to be handled --- src/components/differences_view.ts | 3 ++- src/main.ts | 8 ++++++-- src/utils/delay.ts | 5 +++++ 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 src/utils/delay.ts diff --git a/src/components/differences_view.ts b/src/components/differences_view.ts index e0f8941..358e256 100644 --- a/src/components/differences_view.ts +++ b/src/components/differences_view.ts @@ -1,5 +1,6 @@ import { structuredPatch } from 'diff' import { ItemView, TFile, WorkspaceLeaf } from 'obsidian' +import { delay } from 'src/utils/delay' import { Difference } from '../data/difference' import { FileDifferences } from '../data/file_differences' import { preventEmptyString } from '../utils/string_utils' @@ -151,7 +152,7 @@ export class DifferencesView extends ItemView { async showDeleteModal(): Promise { // Wait a moment to avoid appearing overly aggressive with the modal - await this.delay(200) + await delay(200) return new Promise((resolve, reject) => { new DeleteFileModal({ diff --git a/src/main.ts b/src/main.ts index ff24625..03bac4a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -3,6 +3,7 @@ import { Plugin, TFile } from 'obsidian' import { DifferencesView } from './components/differences_view' import { RiskyActionModal } from './components/modals/risky_action_modal' import { SelectFileModal } from './components/modals/select_file_modal' +import { delay } from './utils/delay' export default class FileDiffPlugin extends Plugin { fileDiffMergeWarningKey = 'file-diff-merge-warning' @@ -43,7 +44,7 @@ export default class FileDiffPlugin extends Plugin { editorCallback: async () => { // Show warning when this option is selected for the first time if (!localStorage.getItem(this.fileDiffMergeWarningKey)) { - this.showRiskyActionModal() + await this.showRiskyActionModal() if (!localStorage.getItem(this.fileDiffMergeWarningKey)) { return } @@ -97,7 +98,7 @@ export default class FileDiffPlugin extends Plugin { showRiskyActionModal(): Promise { return new Promise((resolve, reject) => { new RiskyActionModal({ - onAccept: (e: Error | null) => { + onAccept: async (e: Error | null) => { if (e) { reject(e) } else { @@ -105,6 +106,9 @@ export default class FileDiffPlugin extends Plugin { this.fileDiffMergeWarningKey, 'true' ) + // Wait for the set item dispatch event to be processed + await delay(50) + resolve() } }, diff --git a/src/utils/delay.ts b/src/utils/delay.ts new file mode 100644 index 0000000..e4bb5bf --- /dev/null +++ b/src/utils/delay.ts @@ -0,0 +1,5 @@ +export function delay(ms: number): Promise { + return new Promise((resolve) => { + setTimeout(resolve, ms) + }) +}