var base_reader = undefined function subscribe_link(reader, feed_url){ if(reader == "ttrss"){ return `${base_reader}/public.php?op=subscribe&feed_url=${encodeURIComponent(feed_url)}`; } else { return `${base_reader}/bookmarklet?uri=${encodeURIComponent(feed_url)}`; } } window.onload = async function () { let settings = await browser.storage.sync.get(["rb", "reader", "instance"]); base_reader = settings.instance; let base_rb = settings.rb; let feeds = document.getElementById('feeds'); feeds.innerText = "Loading..." browser.tabs.query({ active: true, currentWindow: true }, function (tabs) { browser.tabs.sendMessage(tabs[0].id, {}).then( function (feed_urls) { feeds.innerText = "" if(!base_rb) { let newSettingsLink = document.createElement("a") newSettingsLink["href"] = "/options.html" newSettingsLink.innerText = "RSS-bridge instance not set! Click here to open options."; let newDiv = document.createElement('div'); newDiv.append(newSettingsLink); feeds.appendChild(newDiv); let newP = document.createElement('p') newP.innerText = `Found ${feed_urls.length} feeds` feeds.append(newP) return; } feed_urls.forEach(item => { let newLink = document.createElement('a'); newLink["href"] = item.url newLink.innerText = item.type; let newDiv = document.createElement('div'); newDiv.append(newLink) let previewLink = document.createElement('a'); previewLink["onclick"] = function(){ fetch(item.url) .then( r => r.text() ) .then(r => new window.DOMParser().parseFromString(r, "text/xml")) .then(p => { let channelTitle = "Items" let description = undefined let items = [] let lastBuild = undefined console.log(p.firstChild.children) for(const channel of p.firstChild.children) { //p.firstChild.children.forEach(channel => { for(const child of channel.children) { //channel.children.forEach(child => { if(child.tagName == "title"){ channelTitle = child.textContent } else if (child.tagName == "lastBuildDate") { lastBuild = child.textContent } else if (child.tagName == "description") { description = child.textContent } else if (child.tagName == "item") { item = {} for(const c of child.children){ //child.children.forEach(c => { item[c.tagName] = c.innerHTML } items.push(item) } } } console.log(items) let tableEl = document.createElement("table") items.forEach(item => { let trEl = document.createElement("tr") tableEl.append(trEl) let tdEl = document.createElement("td") let titleEl = document.createElement("a") titleEl.href = item["link"] titleEl.innerText = item["title"] let wrapperDiv = document.createElement("div") wrapperDiv.append(titleEl) let wrapperDiv2 = document.createElement("div") wrapperDiv2.innerText = item["pubDate"] tdEl.append(wrapperDiv) tdEl.append(wrapperDiv2) trEl.append(tdEl) let td3El = document.createElement("td") td3El.innerHTML = item["description"] trEl.append(td3El) }) feeds.append(tableEl) }) } previewLink["href"] = "#" previewLink.innerText = "preview"; newDiv.append(previewLink) if(base_reader){ let subLink = document.createElement('a'); subLink["href"] = subscribe_link(settings.reader, item.url) subLink.innerText = "subscribe"; newDiv.append(subLink) } feeds.append(newDiv) }) if(feed_urls.length == 0) { let newP = document.createElement('p') newP.innerText = "No feeds found" feeds.append(newP) } }); }); }