blob: c674f39d6782afc9fa96ccc7f8d09261fb2d249e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
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)
}
});
});
}
|