diff options
Diffstat (limited to 'cs.js')
-rw-r--r-- | cs.js | 36 |
1 files changed, 20 insertions, 16 deletions
@@ -15,13 +15,6 @@ let types = { 'text/rdf': "rdf" } -function normalize_feed_url(feed_url) { - if (feed_url.startsWith('/')) { - let url = window.location.href - feed_url = url.split('/')[0] + '//' + url.split('/')[2] + feed_url; - } - return feed_url -} function find_links_in_page() { let links = document.querySelectorAll('link[type]'); @@ -29,7 +22,8 @@ function find_links_in_page() { for (let i = 0; i < links.length; i++) { if (links[i].hasAttribute('type') && links[i].getAttribute('type') in types) { let title = links[i].getAttribute('title') - let feed_url = normalize_feed_url(links[i].getAttribute('href')); + let href = links[i].getAttribute('href') + let feed_url = new URL(href, window.location.href).href let type = types[links[i].getAttribute('type')] let feed = { type: `native: ${title || type}`, @@ -59,24 +53,34 @@ function get_all_types(feed_url, note) { return feeds; } +let objs = [] + async function get_feed_urls() { let settings = await browser.storage.sync.get("rb"); base_url = settings.rb; let all_feed_urls = [] - let url = window.location.href; let host = window.location.host; - //url = url.toLowerCase() - if (host.includes("instagram")) { - all_feed_urls = all_feed_urls.concat(await get_insta(url)) - } else if (host.includes("twitter")) { - all_feed_urls = all_feed_urls.concat(get_twitter(url)) - } else if (host.includes("youtube")) { - all_feed_urls = all_feed_urls.concat(await get_youtube(url)) + for (const obj of objs) { + for (const obj_host of obj.hosts) { + if (host.includes(obj_host)) { + result = await obj.callback() + all_feed_urls = all_feed_urls.concat(result) + break + } + } } all_feed_urls = all_feed_urls.concat(find_links_in_page()) return all_feed_urls } +function register(hosts, callback) { + objs.push({hosts, callback}) +} + +register(["instagram"], get_insta) +register(["twitter"], get_twitter) +register(["youtube"], get_youtube) + browser.runtime.onMessage.addListener(function (msg, sender) { return Promise.resolve(get_feed_urls()); }) |