mirror of
https://github.com/fancive/obsidian-parallel-reader.git
synced 2026-07-22 06:53:43 +00:00
fix: prevent modal confirmation promise from resolving twice
The regenerate confirmation modal's onClose callback fired after button click handlers, calling resolve() a second time. While Promise.resolve is idempotent, this was confusing. Added explicit settlement tracking so the promise resolves exactly once regardless of how the modal closes. Change-Id: Ief4cbb78f15fe220a20adaf8343d744ffa8c1653
This commit is contained in:
parent
b02d0f4f30
commit
f2e197453c
1 changed files with 9 additions and 3 deletions
12
main.ts
12
main.ts
|
|
@ -352,6 +352,12 @@ class ParallelReaderPlugin extends Plugin {
|
|||
|
||||
confirmRegenerateEditedCards(): Promise<boolean> {
|
||||
return new Promise<boolean>((resolve) => {
|
||||
let settled = false;
|
||||
const settle = (value: boolean) => {
|
||||
if (settled) return;
|
||||
settled = true;
|
||||
resolve(value);
|
||||
};
|
||||
const message = this.t('confirmRegenerateEditedCards');
|
||||
const modal = new Modal(this.app);
|
||||
modal.titleEl.setText(this.t('displayName'));
|
||||
|
|
@ -359,13 +365,13 @@ class ParallelReaderPlugin extends Plugin {
|
|||
const btnRow = modal.contentEl.createDiv({ cls: 'modal-button-container' });
|
||||
btnRow.createEl('button', { text: 'Cancel' }).addEventListener('click', () => {
|
||||
modal.close();
|
||||
resolve(false);
|
||||
settle(false);
|
||||
});
|
||||
btnRow.createEl('button', { text: 'OK', cls: 'mod-cta' }).addEventListener('click', () => {
|
||||
modal.close();
|
||||
resolve(true);
|
||||
settle(true);
|
||||
});
|
||||
modal.onClose = () => resolve(false);
|
||||
modal.onClose = () => settle(false);
|
||||
modal.open();
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue