Mercurial > addons > firefox-addons > feed-preview
diff popup/feed-selection.js @ 0:bc5cc170163c
Initial revision
author | Guido Berhoerster <guido+feed-preview@berhoerster.name> |
---|---|
date | Wed, 03 Oct 2018 23:40:57 +0200 |
parents | |
children | c8fa2430eab2 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/popup/feed-selection.js Wed Oct 03 23:40:57 2018 +0200 @@ -0,0 +1,46 @@ +/* + * 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'; + +async function buildFeedSelection() { + let tabs = await browser.tabs.query({active: true, currentWindow: true}); + let feeds = await browser.runtime.sendMessage(tabs[0].id); + + let feedListElement = document.querySelector('.panel-section-list'); + feedListElement.addEventListener('click', ev => { + // find selected list item element and open the feed in a new tab + for (let element = ev.target; element !== ev.currentTarget; + element = element.parentElement) { + if (element.classList.contains('panel-list-item')) { + browser.tabs.create({url: element.dataset.href}); + break; + } + } + ev.preventDefault(); + }); + + let templateElement = document.querySelector('#feed-item-template'); + for (let feed of feeds) { + let feedNode = document.importNode(templateElement.content, true); + feedNode.querySelector('.panel-list-item').dataset.href = feed.href; + + let prefix = (feed.type === 'application/atom+xml') ? 'Atom Feed' : + 'RSS Feed'; + + let imgNode = feedNode.querySelector('.icon > img'); + imgNode.src = browser.runtime.getURL('icons/feed-preview.svg'); + imgNode.alt = prefix; + + feedNode.querySelector('.text').textContent = + `${prefix}: ${feed.title}`; + feedListElement.appendChild(feedNode); + } +} + +buildFeedSelection();