diff --git a/src/public/javascripts/services/sidebar.js b/src/public/javascripts/services/sidebar.js index f0a529845..7606b8035 100644 --- a/src/public/javascripts/services/sidebar.js +++ b/src/public/javascripts/services/sidebar.js @@ -1,5 +1,6 @@ import bundleService from "./bundle.js"; import messagingService from "./messaging.js"; +import optionsService from "./options.js"; class Sidebar { /** @@ -61,6 +62,8 @@ class Sidebar { import("../widgets/what_links_here.js") ])).map(m => m.default); + const options = await optionsService.waitForOptions(); + const widgetRelations = await this.ctx.note.getRelations('widget'); for (const widgetRelation of widgetRelations) { @@ -73,7 +76,7 @@ class Sidebar { const state = (this.state.widgets || []).find(s => s.name === widgetClass.name); try { - const widget = new widgetClass(this.ctx, state); + const widget = new widgetClass(this.ctx, options, state); if (await widget.isEnabled()) { const $el = await widget.render(); diff --git a/src/public/javascripts/widgets/standard_widget.js b/src/public/javascripts/widgets/standard_widget.js index 45d0290bb..c14f207a8 100644 --- a/src/public/javascripts/widgets/standard_widget.js +++ b/src/public/javascripts/widgets/standard_widget.js @@ -19,10 +19,12 @@ const WIDGET_TPL = ` class StandardWidget { /** * @param {TabContext} ctx + * @param {Options} options * @param {object} state */ - constructor(ctx, state) { + constructor(ctx, options, state) { this.ctx = ctx; + this.options = options; this.state = state; // construct in camelCase this.widgetName = this.constructor.name.substr(0, 1).toLowerCase() + this.constructor.name.substr(1); @@ -84,7 +86,7 @@ class StandardWidget { async doRenderBody() {} async isEnabled() { - const option = await optionsService.getJsonOption(this.widgetName + 'Widget'); + const option = this.options.getJson(this.widgetName + 'Widget'); return option ? option.enabled : true; }