This commit is contained in:
Fathi Ben Nasr 2026-10-24 16:33:29 +03:00 • committed by GitHub
commit 58dd3259be
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 35 additions and 0 deletions

View file

@ -1,3 +1,4 @@
import ko from 'ko';
import { settingsAddViewModel } from 'Screen/AbstractSettings';
import { SettingsGet } from 'Common/Globals';
import { AbstractViewPopup } from 'Knoin/AbstractViews';
@ -15,6 +16,35 @@ rl.pluginRemoteRequest = (callback, action, parameters, timeout) => {
rl.app.Remote.request('Plugin' + action, callback, parameters, timeout);
};
/**
* Navigation entries contributed by plugins, rendered in the folder list
* toolbar beside Compose and Contacts.
* @type {Array}
*/
export const pluginNavEntries = ko.observableArray();
/**
* Register a navigation entry for a screen a plugin provides.
*
* Without this a plugin that adds a screen has to reach into the folder list
* template itself, which several already do, each in its own way.
*
* @param {Object} entry
* @param {string} entry.icon character or glyph shown on the button
* @param {string} entry.title tooltip
* @param {string=} entry.hash location hash to navigate to
* @param {Function=} entry.click called instead of setting the hash
*/
rl.addNavEntry = entry => {
if (entry && entry.icon) {
pluginNavEntries.push({
icon: entry.icon,
title: entry.title || '',
click: entry.click || (() => { hasher.setHash(entry.hash || ''); })
});
}
};
/**
* @param {Function} SettingsViewModelClass
* @param {string} labelName