Mercurial > addons > firefox-addons > feed-preview
view content_scripts/feed-readers.js @ 22:38b20de704a0
Use seperate grey icon for the page action
This does not stand out so much as the orange icon espeacially when using dark
themes and should be readable on any theme since there is no transparency.
Currently there is neither a way for addons to specify themed icons for page
actions nor is it possible to use the browser's foreground and background color
as native page action icons do.
author | Guido Berhoerster <guido+feed-preview@berhoerster.name> |
---|---|
date | Sun, 16 Dec 2018 10:22:19 +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); })();