From c4fc2c44e7dcc53bc0341c2645b6a2d09ad3925e Mon Sep 17 00:00:00 2001 From: windingwind Date: Mon, 12 Jun 2023 22:56:44 +0800 Subject: [PATCH] fix: close dialog when shutdown --- src/addon.ts | 2 ++ src/hooks.ts | 1 + src/modules/examples.ts | 9 ++++++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/addon.ts b/src/addon.ts index d26c77f..5fca31e 100644 --- a/src/addon.ts +++ b/src/addon.ts @@ -17,6 +17,7 @@ class Addon { columns: Array; rows: Array<{ [dataKey: string]: string }>; }; + dialog?: DialogHelper; }; // Lifecycle hooks public hooks: typeof hooks; @@ -53,6 +54,7 @@ class Addon { import { BasicTool, unregister } from "zotero-plugin-toolkit/dist/basic"; import { UITool } from "zotero-plugin-toolkit/dist/tools/ui"; import { PreferencePaneManager } from "zotero-plugin-toolkit/dist/managers/preferencePane"; +import { DialogHelper } from "zotero-plugin-toolkit/dist/helpers/dialog"; export class MyToolkit extends BasicTool { UI: UITool; diff --git a/src/hooks.ts b/src/hooks.ts index 30d642f..d70224d 100644 --- a/src/hooks.ts +++ b/src/hooks.ts @@ -83,6 +83,7 @@ async function onStartup() { function onShutdown(): void { ztoolkit.unregisterAll(); + addon.data.dialog?.window?.close(); // Remove addon object addon.data.alive = false; delete Zotero[config.addonInstance]; diff --git a/src/modules/examples.ts b/src/modules/examples.ts index c0e457b..a8f9703 100644 --- a/src/modules/examples.ts +++ b/src/modules/examples.ts @@ -922,10 +922,13 @@ export class HelperExampleFactory { }) .setDialogData(dialogData) .open("Dialog Example"); + addon.data.dialog = dialogHelper; await dialogData.unloadLock.promise; - ztoolkit.getGlobal("alert")( - `Close dialog with ${dialogData._lastButtonId}.\nCheckbox: ${dialogData.checkboxValue}\nInput: ${dialogData.inputValue}.` - ); + addon.data.dialog = undefined; + addon.data.alive && + ztoolkit.getGlobal("alert")( + `Close dialog with ${dialogData._lastButtonId}.\nCheckbox: ${dialogData.checkboxValue}\nInput: ${dialogData.inputValue}.` + ); ztoolkit.log(dialogData); }