trilium/src/public/javascripts/services/options_init.js

41 lines
912 B
JavaScript
Raw Normal View History

import server from "./server.js";
let optionsReady;
const loadListeners = [];
function loadOptions() {
optionsReady = new Promise((resolve, reject) => {
server.get('options').then(options => {
resolve(options);
for (const listener of loadListeners) {
listener(options);
}
});
});
}
loadOptions(); // initial load
function addLoadListener(listener) {
loadListeners.push(listener);
// useful when listener has been added after the promise resolved, but can cause double emit if not yet
// that should not be an issue though
optionsReady.then(listener);
}
async function getOption(name) {
const options = await optionsReady;
return options[name];
}
export default {
// use addLoadListener() which will be called also on refreshes
optionsReady,
addLoadListener,
loadOptions,
getOption
}