Skip to content
Snippets Groups Projects
settings.js 1.04 KiB
Newer Older
Thomas Rientjes's avatar
Thomas Rientjes committed
/**
 * Fires once the content script worker is initialized.
 *
 * @event worker:initialized
 * @param {Object} initialState The initial state of the settings module.
Thomas Rientjes's avatar
Thomas Rientjes committed
 */
self.port.once('worker:initialized', function (initialState) {
Thomas Rientjes's avatar
Thomas Rientjes committed

    applyL10n(initialState.l10n);
Thomas Rientjes's avatar
Thomas Rientjes committed
});

self.port.on('preference:fetched', function () {

    // TODO Re-render the user interface.
});

/**
 * Applies a given localization to marked document elements.
 * https://bugzilla.mozilla.org/show_bug.cgi?id=787351
 *
 * @private
 * @param {Object} l10n A localization object.
Thomas Rientjes's avatar
Thomas Rientjes committed
 */
function applyL10n (l10n) {

    var l10nKeys = Object.keys(l10n);

    l10nKeys.forEach(function (l10nKey) {

        var elements = document.querySelectorAll('[data-l10n-id="' + l10nKey + '"]');

        for (let element of elements) {
            element.textContent = l10n[l10nKey];
        }
    });
}
Thomas Rientjes's avatar
Thomas Rientjes committed

function fetchPreference (preferenceKey) {
    self.port.emit('preference:fetch', preferenceKey);
}

/**
 * Emitters
 */

self.port.emit('preference:changed', {
    key: 'sliderPosition',
    value: 2
});