view content_scripts/feed-readers.js @ 51:dc25aa2bc628

Revert flexbox layout from extension.css in the entry style sheet This reverts laying out the contents of the body according to the flexbox model since it has, among other things, the unwanted effect of stretching images.
author Guido Berhoerster <guido+feed-preview@berhoerster.name>
date Fri, 06 Sep 2019 13:16:48 +0200
parents ff5e5e3eba32
children
line wrap: on
line source

/*
 * Copyright (C) 2018 Guido Berhoerster <guido+feed-preview@berhoerster.name>
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */

'use strict';

function updateFeedReaders(feedReaders) {
    let feedReaderSelectionElement = document.forms['feed-subscription']
            .elements['feed-reader-selection'];
    for (let optionElement of
            feedReaderSelectionElement.querySelectorAll('option')) {
        optionElement.remove();
    }

    for (let feedReader of feedReaders) {
        let optionElement = document.createElement('option');
        optionElement.value = feedReader.urlTemplate;
        optionElement.textContent = feedReader.title;
        feedReaderSelectionElement.append(optionElement);
    }

    document.forms['feed-subscription'].elements['main'].disabled =
            feedReaders.length === 0;
}

document.addEventListener('submit', ev => {
    if (ev.target.id !== 'feed-subscription') {
        return;
    }

    ev.preventDefault();
    let subscribeUrl = ev.target.elements['feed-reader-selection'].value
            .replace('%s', encodeURIComponent(document.documentURI));
    console.log(`subscribing to feed using ${subscribeUrl}`);
    window.location.href = subscribeUrl;
});

function onStorageChanged(changes, areaName) {
    if (areaName !== 'sync' || changes.feedReaders === 'undefined') {
        return;
    }

    // stored feed readers have been changed or deleted
    let feedReaders = typeof changes.feedReaders.newValue !== 'undefined' ?
            changes.feedReaders.newValue : [];
    console.log('feedReaders changed to', feedReaders);
    updateFeedReaders(feedReaders);
}

(async () => {
    // initialize subscription form
    let {feedReaders = []} = await browser.storage.sync.get('feedReaders');
    updateFeedReaders(feedReaders);

    browser.storage.onChanged.addListener(onStorageChanged);
})();