aboutsummaryrefslogtreecommitdiff
path: root/popup/index.js
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)
                }
            });
    });
}