update: hot reload without waiting

This commit is contained in:
windingwind 2023-06-13 12:51:22 +08:00
parent 27c68b1167
commit b2b490b191
3 changed files with 5 additions and 11 deletions

View File

@ -225,11 +225,10 @@ When file changes are detected in `src` or `addon`, the plugin will be automatic
<details style="text-indent: 2em">
<summary>💡 Steps to add this feature to an existing plugin</summary>
1. Add `if (reason == ADDON_DISABLE) {Services.obs.notifyObservers(null, "startupcache-invalidate", null);}` to `shutdown()` in the `addon/bootstrap.js`
2. Copy `scripts/reload.mjs`
3. Copy `reload`, `watch`, and `start-watch` commands in `package.json`
4. Run `npm install --save-dev chokidar-cli`
5. Done.
1. Copy `scripts/reload.mjs`
2. Copy `reload`, `watch`, and `start-watch` commands in `package.json`
3. Run `npm install --save-dev chokidar-cli`
4. Done.
</details>

3
addon/bootstrap.js vendored
View File

@ -106,9 +106,6 @@ function shutdown({ id, version, resourceURI, rootURI }, reason) {
if (reason === APP_SHUTDOWN) {
return;
}
if (reason == ADDON_DISABLE) {
Services.obs.notifyObservers(null, "startupcache-invalidate", null);
}
if (typeof Zotero === "undefined") {
Zotero = Components.classes["@zotero.org/Zotero;1"].getService(
Components.interfaces.nsISupports

View File

@ -20,9 +20,7 @@ const script = `
(async () => {
const { AddonManager } = ChromeUtils.import("resource://gre/modules/AddonManager.jsm");
const addon = await AddonManager.getAddonByID("${addonID}");
addon.disable();
await Zotero.Promise.delay(1000);
addon.enable();
await addon.reload();
const progressWindow = new Zotero.ProgressWindow({ closeOnClick: true });
progressWindow.changeHeadline("${addonName} Hot Reload");
progressWindow.progress = new progressWindow.ItemProgress(