123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /*
- Author: Farooq Karimi Zadeh
- Email: fkz@riseup.net
- Repo: https://notabug.org/farooqkz/veil-client-ff
- */
- const atab_qInfo = {currentWindow:true, active:true};
- const setto = (btn, namespace, state) => {
- var word0 = state === "report"?"Report ":"Retract vote about ";
- var word1 = namespace === "page"?"page":"site";
- btn.innerHTML = word0 + word1;
- btn.onclick = e => {
- const next_state = state === "report"?"retract":"report";
- browser.tabs.query(atab_qInfo).then(tabs => {
- var url = tabs[0].url;
- var key = namespace === "page"?url:url.split("/")[2];
- if (key.startsWith("https")) {
- key = key.replace("https", "http");
- }
- // ^ It is either page url or hostname(and port if any)
- var addr = "http://de1.hashbang.sh:6101/";
- addr += (state === "report"?"vote":"unvote") + "?addr=";
- addr += key;
- // ^ So we have constructed the address we want to fetch() :)
- fetch(addr).then(response => {
- if (response.ok) {
- setto(btn, namespace, state === "retract"?"report":"retract");
- var storage_key = "reported_" + namespace + "s";
- // It MUST be either reported_sites or reported_pages
- browser.storage.local.get(storage_key).then(data => {
- data = data[storage_key];
- if (state === "retract") {
- data.splice(data.indexOf(key), 1);
- } else {
- if (!data.includes(key))
- data = data.concat([key]);
- }
- let data_ = {};
- data_[storage_key] = data;
- browser.storage.local.set(data_);
- });
- setto(btn, namespace, next_state);
- browser.tabs.reload();
- }
- });
- });
- };
- };
- browser.storage.local.get(["reported_sites", "reported_pages"]).then(somedata => {
- browser.tabs.query(atab_qInfo).then(tabs => {
- var site_btn = document.getElementsByName("report_site_btn")[0];
- var url = tabs[0].url;
- if (url.startsWith("https")) {
- url = url.replace("https", "http");
- }
- var hostname = url.split("/")[2];
- if (somedata["reported_sites"].includes(hostname)) {
- setto(site_btn, "site", "retract");
- } else {
- setto(site_btn, "site", "report");
- }
- var page_btn = document.getElementsByName("report_page_btn")[0];
- if (somedata["reported_pages"].includes(url)) {
- setto(page_btn, "page", "retract");
- } else {
- setto(page_btn, "page", "report");
- }
- });
- });
- browser.storage.local.get("badsites").then(badsites => {
- browser.tabs.query(atab_qInfo).then(tabs => {
- var hostname = tabs[0].url.split("/")[2];
- var score = Number(badsites["badsites"][hostname] || 0);
- if (score >= 10 || score === -1){
- document.getElementsByName("badsite")[0].innerHTML =
- '<span style="color: red">This website is not safe and has inappropriate images</span>';
- document.getElementsByName("badpage")[0].style.display = "none";
- }else{
- document.getElementsByName("badsite")[0].innerHTML =
- '<span style="color: green">This website is safe.</span>';
- }
- });
- });
- browser.storage.local.get("badpages").then(function(badpages) {
- browser.tabs.query(atab_qInfo).then(function(tabs) {
- var url = tabs[0].url;
- if (url.startsWith("https")) {
- url = url.replace("https", "http");
- }
- var score = Number(badpages["badpages"][url] || 0);
- if (score >= 10 || score === -1){
- document.getElementsByName("badpage")[0].innerHTML =
- '<span style="color: red">This page is not safe and has inappropriate images</span>';
- } else {
- document.getElementsByName("badpage")[0].innerHTML =
- '<span style="color: green">This page is safe.</span> ';
- }
- });
- });
|