add: notify hook example
This commit is contained in:
parent
aa9763e9a9
commit
84beaab5fd
@ -1,6 +1,6 @@
|
|||||||
<vbox
|
<vbox
|
||||||
id="zotero-prefpane-__addonRef__"
|
id="zotero-prefpane-__addonRef__"
|
||||||
onload="Zotero.AddonTemplate.hooks.onCustomEvent('prefLoad', {window})"
|
onload="Zotero.AddonTemplate.hooks.onPrefsEvent('load', {window})"
|
||||||
>
|
>
|
||||||
<groupbox>
|
<groupbox>
|
||||||
<label><html:h2>&zotero.__addonRef__.pref.title;</html:h2></label>
|
<label><html:h2>&zotero.__addonRef__.pref.title;</html:h2></label>
|
||||||
|
48
src/hooks.ts
48
src/hooks.ts
@ -10,20 +10,20 @@ import { registerPrefsScripts } from "./modules/preferenceScript";
|
|||||||
async function onStartup() {
|
async function onStartup() {
|
||||||
initLocale();
|
initLocale();
|
||||||
|
|
||||||
const w = showProgressWindow(
|
const progWin = showProgressWindow(
|
||||||
config.addonName,
|
config.addonName,
|
||||||
getString("startup.begin"),
|
getString("startup.begin"),
|
||||||
"default",
|
"default",
|
||||||
-1
|
-1
|
||||||
);
|
);
|
||||||
changeProgressWindowLine(w, { newProgress: 0 });
|
changeProgressWindowLine(progWin, { newProgress: 0 });
|
||||||
|
|
||||||
BasicExampleFactory.registerPrefs();
|
BasicExampleFactory.registerPrefs();
|
||||||
|
|
||||||
BasicExampleFactory.registerNotifier();
|
BasicExampleFactory.registerNotifier();
|
||||||
|
|
||||||
await Zotero.Promise.delay(1000);
|
await Zotero.Promise.delay(1000);
|
||||||
changeProgressWindowLine(w, {
|
changeProgressWindowLine(progWin, {
|
||||||
newProgress: 30,
|
newProgress: 30,
|
||||||
newText: `[30%] ${getString("startup.begin")}`,
|
newText: `[30%] ${getString("startup.begin")}`,
|
||||||
});
|
});
|
||||||
@ -47,11 +47,11 @@ async function onStartup() {
|
|||||||
await UIExampleFactory.registerReaderTabPanel();
|
await UIExampleFactory.registerReaderTabPanel();
|
||||||
|
|
||||||
await Zotero.Promise.delay(1000);
|
await Zotero.Promise.delay(1000);
|
||||||
changeProgressWindowLine(w, {
|
changeProgressWindowLine(progWin, {
|
||||||
newProgress: 100,
|
newProgress: 100,
|
||||||
newText: `[100%] ${getString("startup.finish")}`,
|
newText: `[100%] ${getString("startup.finish")}`,
|
||||||
});
|
});
|
||||||
w.startCloseTimer(5000);
|
progWin.startCloseTimer(5000);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onShutdown(): void {
|
function onShutdown(): void {
|
||||||
@ -63,14 +63,37 @@ function onShutdown(): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function is just a dispatcher for UI events.
|
* This function is just an example of dispatcher for Notify events.
|
||||||
* Any operations should be placed in a function to keep this funcion clear
|
* Any operations should be placed in a function to keep this funcion clear.
|
||||||
|
*/
|
||||||
|
async function onNotify(
|
||||||
|
event: string,
|
||||||
|
type: string,
|
||||||
|
ids: Array<string>,
|
||||||
|
extraData: { [key: string]: any }
|
||||||
|
) {
|
||||||
|
// You can add your code to the corresponding notify type
|
||||||
|
ztoolkit.Tool.log("notify", event, type, ids, extraData);
|
||||||
|
if (
|
||||||
|
event == "select" &&
|
||||||
|
type == "tab" &&
|
||||||
|
extraData[ids[0]].type == "reader"
|
||||||
|
) {
|
||||||
|
BasicExampleFactory.exampleNotifierCallback();
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function is just an example of dispatcher for Preference UI events.
|
||||||
|
* Any operations should be placed in a function to keep this funcion clear.
|
||||||
* @param type event type
|
* @param type event type
|
||||||
* @param data event data
|
* @param data event data
|
||||||
*/
|
*/
|
||||||
function onCustomEvent(type: string, data: { [key: string]: any }) {
|
async function onPrefsEvent(type: string, data: { [key: string]: any }) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case "prefLoad":
|
case "load":
|
||||||
registerPrefsScripts(data.window);
|
registerPrefsScripts(data.window);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -78,8 +101,13 @@ function onCustomEvent(type: string, data: { [key: string]: any }) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add your hooks here. For element click, etc.
|
||||||
|
// Keep in mind hooks only do dispatch. Don't add code that does real jobs in hooks.
|
||||||
|
// Otherwise the code would be hard to read and maintian.
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
onStartup,
|
onStartup,
|
||||||
onShutdown,
|
onShutdown,
|
||||||
onCustomEvent,
|
onNotify,
|
||||||
|
onPrefsEvent,
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { config } from "../../package.json";
|
import { config } from "../../package.json";
|
||||||
import { getString } from "./locale";
|
import { getString } from "./locale";
|
||||||
|
import { showProgressWindow } from "./progressWindow";
|
||||||
|
|
||||||
function example(
|
function example(
|
||||||
target: any,
|
target: any,
|
||||||
@ -38,18 +39,7 @@ export class BasicExampleFactory {
|
|||||||
this.unregisterNotifier(notifierID);
|
this.unregisterNotifier(notifierID);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ztoolkit.Tool.log("notify", event, type, ids, extraData);
|
addon.hooks.onNotify(event, type, ids, extraData);
|
||||||
// You can add your code to the corresponding notify type
|
|
||||||
if (
|
|
||||||
event == "select" &&
|
|
||||||
type == "tab" &&
|
|
||||||
extraData[ids[0]].type == "reader"
|
|
||||||
) {
|
|
||||||
// Select a reader tab
|
|
||||||
}
|
|
||||||
if (event == "add" && type == "item") {
|
|
||||||
// Add an item
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -70,6 +60,11 @@ export class BasicExampleFactory {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@example
|
||||||
|
static exampleNotifierCallback() {
|
||||||
|
showProgressWindow(config.addonName, "Open Tab Detected!", "success");
|
||||||
|
}
|
||||||
|
|
||||||
@example
|
@example
|
||||||
private static unregisterNotifier(notifierID: string) {
|
private static unregisterNotifier(notifierID: string) {
|
||||||
Zotero.Notifier.unregisterObserver(notifierID);
|
Zotero.Notifier.unregisterObserver(notifierID);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user