view popup/feed-selection.js @ 4:086ee559acbb

Remove unused parameter from xpathQuery and rename functions Remove unused xpathMapping parameter from xpathQuery. Rename xpathQuery to feedQueryXPath, xpathQueryAll to feedQueryXPathAll, and nsMapper to feedNSResolver which better reflects their purpose.
author Guido Berhoerster <guido+feed-preview@berhoerster.name>
date Sun, 04 Nov 2018 09:54:37 +0100
parents bc5cc170163c
children c8fa2430eab2
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';

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();