Register your addon hooks in file `addon/*addon_name*/*addon_name*.js`.
```js
-Addon_registerHook(type, hookfnstr);
+document.addEventListener(name, callback);
```
-*type* is the name of the hook and corresponds to a known Friendica JavaScript hook.
-*hookfnstr* is the name of your JavaScript function to execute.
-
-No arguments are provided to your JavaScript callback function. Example:
-
-```javascript
-function myhook_function() {
-
-}
-```
+*name* is the name of the hook and corresponds to a known Friendica JavaScript hook.
+*callback* is a JavaScript function to execute.
## Modules
### view/js/main.js
- callAddonHooks("postprocess_liveupdate");
+ document.dispatchEvent(new Event('postprocess_liveupdate'));
+++ /dev/null
-/**
- * @file addon-hooks.js
- * @brief Provide a way for add-ons to register a JavaScript hook
- */
-
-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)
-{
- if (!addon_hooks.hasOwnProperty(type)) {
- addon_hooks[type] = [];
- }
-
- 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();
- }
- }
- }
- }
-}
$('.wall-item-body', data).imagesLoaded(function() {
updateConvItems(data);
+ document.dispatchEvent(new Event('postprocess_liveupdate'));
+
// Update the scroll position.
$(window).scrollTop($(window).scrollTop() + $("section").height() - orgHeight);
});
-
- callAddonHooks("postprocess_liveupdate");
-
});
-
}
function imgbright(node) {
} else {
$("#scroll-end").fadeIn('normal');
}
+
+ document.dispatchEvent(new Event('postprocess_liveupdate'));
});
}
<script type="text/javascript" src="view/asset/imagesloaded/imagesloaded.pkgd.min.js"></script>
<script type="text/javascript" src="view/js/acl.js" ></script>
<script type="text/javascript" src="view/asset/base64/base64.min.js" ></script>
-<script type="text/javascript" src="view/js/addon-hooks.js" ></script>
{{if is_array($addon_hooks)}}
{{foreach $addon_hooks as $addon_hook}}
<script type="text/javascript" src="addon/{{$addon_hook}}/{{$addon_hook}}.js"></script>
<script type="text/javascript" src="view/asset/imagesloaded/imagesloaded.pkgd.min.js"></script>
<script type="text/javascript" src="view/js/acl.js"></script>
<script type="text/javascript" src="view/asset/base64/base64.min.js"></script>
-<script type="text/javascript" src="view/js/addon-hooks.js" ></script>
{{if is_array($addon_hooks)}}
{{foreach $addon_hooks as $addon_hook}}
<script type="text/javascript" src="addon/{{$addon_hook}}/{{$addon_hook}}.js"></script>