81 lines
2.2 KiB
JavaScript
81 lines
2.2 KiB
JavaScript
/* eslint-disable no-undef */
|
|
|
|
/**
|
|
* Most of this code is from Zotero team's official Make It Red example[1]
|
|
* or the Zotero 7 documentation[2].
|
|
* [1] https://github.com/zotero/make-it-red
|
|
* [2] https://www.zotero.org/support/dev/zotero_7_for_developers
|
|
*/
|
|
|
|
var chromeHandle;
|
|
|
|
function install(data, reason) {}
|
|
|
|
async function startup({ id, version, resourceURI, rootURI }, reason) {
|
|
await Zotero.initializationPromise;
|
|
|
|
// String 'rootURI' introduced in Zotero 7
|
|
if (!rootURI) {
|
|
rootURI = resourceURI.spec;
|
|
}
|
|
|
|
var aomStartup = Components.classes[
|
|
"@mozilla.org/addons/addon-manager-startup;1"
|
|
].getService(Components.interfaces.amIAddonManagerStartup);
|
|
var manifestURI = Services.io.newURI(rootURI + "manifest.json");
|
|
chromeHandle = aomStartup.registerChrome(manifestURI, [
|
|
["content", "__addonRef__", rootURI + "chrome/content/"],
|
|
]);
|
|
|
|
/**
|
|
* Global variables for plugin code.
|
|
* The `_globalThis` is the global root variable of the plugin sandbox environment
|
|
* and all child variables assigned to it is globally accessible.
|
|
* See `src/index.ts` for details.
|
|
*/
|
|
const ctx = {
|
|
rootURI,
|
|
};
|
|
ctx._globalThis = ctx;
|
|
|
|
Services.scriptloader.loadSubScript(
|
|
`${rootURI}/chrome/content/scripts/__addonRef__.js`,
|
|
ctx,
|
|
);
|
|
Zotero.__addonInstance__.hooks.onStartup();
|
|
}
|
|
|
|
async function onMainWindowLoad({ window }, reason) {
|
|
Zotero.__addonInstance__?.hooks.onMainWindowLoad(window);
|
|
}
|
|
|
|
async function onMainWindowUnload({ window }, reason) {
|
|
Zotero.__addonInstance__?.hooks.onMainWindowUnload(window);
|
|
}
|
|
|
|
function shutdown({ id, version, resourceURI, rootURI }, reason) {
|
|
if (reason === APP_SHUTDOWN) {
|
|
return;
|
|
}
|
|
|
|
if (typeof Zotero === "undefined") {
|
|
Zotero = Components.classes["@zotero.org/Zotero;1"].getService(
|
|
Components.interfaces.nsISupports,
|
|
).wrappedJSObject;
|
|
}
|
|
Zotero.__addonInstance__?.hooks.onShutdown();
|
|
|
|
Cc["@mozilla.org/intl/stringbundle;1"]
|
|
.getService(Components.interfaces.nsIStringBundleService)
|
|
.flushBundles();
|
|
|
|
Cu.unload(`${rootURI}/chrome/content/scripts/__addonRef__.js`);
|
|
|
|
if (chromeHandle) {
|
|
chromeHandle.destruct();
|
|
chromeHandle = null;
|
|
}
|
|
}
|
|
|
|
function uninstall(data, reason) {}
|