Code organisation and documentation of JS hook code

This commit is contained in:
Pascal Deklerck 2018-06-13 09:31:08 +02:00
parent ef01dfefd4
commit a11103a3a7
2 changed files with 29 additions and 14 deletions

View file

@ -1,5 +1,16 @@
/**
* @file addon-hooks.js
* @brief Provide a way for add-ons to register a JavaScript hook
*/
var addon_hooks={}; var addon_hooks={};
/**
* @brief Register a JavaScript hook to be called from other Javascript files
* @pre the .js file from which the hook will be called is included in the document response
* @param type which type of hook i.e. where should it be called along with other hooks of the same type
* @param hookfnstr name of the JavaScript function name that needs to be called
*/
function Addon_registerHook( type, hookfnstr ) function Addon_registerHook( type, hookfnstr )
{ {
if (!addon_hooks.hasOwnProperty(type)) { if (!addon_hooks.hasOwnProperty(type)) {
@ -8,3 +19,20 @@ function Addon_registerHook( type, hookfnstr )
addon_hooks[type].push( hookfnstr ); addon_hooks[type].push( hookfnstr );
} }
/**
* @brief Call all registered hooks of a certain type, i.e. at the same point of the JavaScript code execution
* @param typeOfHook string indicating which type of hooks to be called among the registered hooks
*/
function callAddonHooks( typeOfHook ) {
if (typeof addon_hooks !== 'undefined') {
var myTypeOfHooks = addon_hooks[typeOfHook];
if (typeof myTypeOfHooks !== 'undefined') {
for (addon_hook_idx = 0; addon_hook_idx < myTypeOfHooks.length; addon_hook_idx++) {
var hookfnstr = myTypeOfHooks[addon_hook_idx];
var hookfn = window[hookfnstr];
if (typeof hookfn === "function") hookfn();
}
}
}
}

View file

@ -395,19 +395,6 @@ function NavUpdate() {
timer = setTimeout(NavUpdate, updateInterval); timer = setTimeout(NavUpdate, updateInterval);
} }
function callAddonHooks(typeOfHook) {
if (typeof addon_hooks !== 'undefined') {
var myTypeOfHooks = addon_hooks[typeOfHook];
if (typeof myTypeOfHooks !== 'undefined') {
for (addon_hook_idx = 0; addon_hook_idx < myTypeOfHooks.length; addon_hook_idx++) {
var hookfnstr = myTypeOfHooks[addon_hook_idx];
var hookfn = window[hookfnstr];
if (typeof hookfn === "function") hookfn();
}
}
}
}
function liveUpdate(src) { function liveUpdate(src) {
if ((src == null) || stopped || !profile_uid) { if ((src == null) || stopped || !profile_uid) {
$('.like-rotator').hide(); return; $('.like-rotator').hide(); return;
@ -473,7 +460,7 @@ function liveUpdate(src) {
prev = ident; prev = ident;
}); });
callAddonHooks("postprocess"); callAddonHooks("postprocess_liveupdate");
$('.like-rotator').hide(); $('.like-rotator').hide();
if (commentBusy) { if (commentBusy) {