Mercurial > addons > firefox-addons > feed-preview
view content_scripts/feed-readers.js @ 23:7f1b69e9798d version-4
Release version 4
author | Guido Berhoerster <guido+feed-preview@berhoerster.name> |
---|---|
date | Sun, 16 Dec 2018 10:28:57 +0100 |
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); })();