diff --git a/addon/bootstrap.js b/addon/bootstrap.js index c9f4d15..b3ad9e6 100644 --- a/addon/bootstrap.js +++ b/addon/bootstrap.js @@ -64,6 +64,11 @@ function install(data, reason) {} async function startup({ id, version, resourceURI, rootURI }, reason) { await waitForZotero(); + // String 'rootURI' introduced in Zotero 7 + if (!rootURI) { + rootURI = resourceURI.spec; + } + if (Zotero.platformMajorVersion >= 102) { var aomStartup = Components.classes[ "@mozilla.org/addons/addon-manager-startup;1" @@ -74,11 +79,10 @@ async function startup({ id, version, resourceURI, rootURI }, reason) { ["locale", "__addonRef__", "en-US", rootURI + "chrome/locale/en-US/"], ["locale", "__addonRef__", "zh-CN", rootURI + "chrome/locale/zh-CN/"], ]); - } - - // String 'rootURI' introduced in Zotero 7 - if (!rootURI) { - rootURI = resourceURI.spec; + } else { + if (reason == ADDON_INSTALL || reason == ADDON_ENABLE) { + setDefaultPrefs(rootURI); + } } // Global variables for plugin code @@ -117,3 +121,27 @@ function shutdown({ id, version, resourceURI, rootURI }, reason) { } function uninstall(data, reason) {} + +// Loads default preferences from defaults/preferences/prefs.js in Zotero 6 +function setDefaultPrefs(rootURI) { + var branch = Services.prefs.getDefaultBranch(""); + var obj = { + pref(pref, value) { + switch (typeof value) { + case "boolean": + branch.setBoolPref(pref, value); + break; + case "string": + branch.setStringPref(pref, value); + break; + case "number": + branch.setIntPref(pref, value); + break; + default: + Zotero.logError(`Invalid type '${typeof value}' for pref '${pref}'`); + } + }, + }; + Zotero.getMainWindow().console.log(rootURI + "prefs.js"); + Services.scriptloader.loadSubScript(rootURI + "prefs.js", obj); +} diff --git a/addon/defaults/preferences/defaults.js b/addon/prefs.js similarity index 100% rename from addon/defaults/preferences/defaults.js rename to addon/prefs.js