From 0e00bb8b1e8d3d2afd1114a981fed291a111c0d9 Mon Sep 17 00:00:00 2001 From: Jack Case Date: Sat, 25 Oct 2025 11:27:20 -0400 Subject: [PATCH] tweaking for alpha --- manifest.json | 2 +- pages/action_popup.html | 12 ++++++---- scripts/hide-slop.js | 21 ++++++++++++++--- scripts/report-slop.js | 52 +++++++++++++++++++++++++++++++++++------ 4 files changed, 71 insertions(+), 16 deletions(-) diff --git a/manifest.json b/manifest.json index f96e82c..2a793d5 100644 --- a/manifest.json +++ b/manifest.json @@ -25,7 +25,7 @@ }, "background": { - "page": "pages/background_page.html" + "scripts": ["scripts/report-slop.js"] }, "content_scripts": [ diff --git a/pages/action_popup.html b/pages/action_popup.html index 749f424..a4de024 100644 --- a/pages/action_popup.html +++ b/pages/action_popup.html @@ -3,15 +3,17 @@ + + Slop Farmer

Hello, world!

-
- - - + + + + - +
\ No newline at end of file diff --git a/scripts/hide-slop.js b/scripts/hide-slop.js index a0dbb61..7c7b8fa 100644 --- a/scripts/hide-slop.js +++ b/scripts/hide-slop.js @@ -65,9 +65,24 @@ function setup_result_observer() { result_list_observer.observe(result_list_node, config) } -function onload_handler() { +async function wait_for_results() { + results = new Promise(async (resolve) => { + let node = document.querySelector(ddg_result_list_selector) + while (!node) { + await new Promise((resolve) => {setTimeout(()=>{resolve()}, 100)}) + node = document.querySelector(ddg_result_list_selector) + } + resolve(node) + }) + + return results +} + +async function onload_handler() { + + // get results ol node to observe - result_list_node = document.querySelector(ddg_result_list_selector) + result_list_node = await wait_for_results() get_initial_links() setup_result_observer() @@ -80,5 +95,5 @@ browser.runtime.onMessage.addListener(message_listener) if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", onload_handler) } else { - onload_handler() + wait_for_results().then(onload_handler) } diff --git a/scripts/report-slop.js b/scripts/report-slop.js index d1ea358..d14102a 100644 --- a/scripts/report-slop.js +++ b/scripts/report-slop.js @@ -1,6 +1,11 @@ const API_URL = "http://localhost:8000" let access_token +const login_form = document.getElementById("login-form") +if(login_form) { + login_form.addEventListener("submit", (event) => {event.preventDefault(); submit_login_form()}) +} + function setup_storage_db() { /* create indexeddb object store to retain objects in the form of * {"domain": "domain.tld", @@ -15,14 +20,17 @@ function setup_storage_db() { db_request.onerror = (event) => { // handle error + console.log(event) } db_request.onsuccess = (event) => { // create objectstore + console.log(event) db = event.target.result } db_request.onupgradeneeded = (event) => { + console.log(event) db = event.target.result const slop_store = db.createObjectStore("slop", {keyPath: "domain"}) } @@ -85,7 +93,15 @@ async function insert_slop(domain, path) { } const report_url = new URL("/report", API_URL) - const request = new Request(report_url, {method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify({slop_urls: [new URL(path, "http://"+domain).toString()]})}) + const request = new Request(report_url, + { + method: "POST", + headers: { + "Content-Type": "application/json", + "Bearer": get_access_token() + }, + body: JSON.stringify({slop_urls: [new URL(path, "http://"+domain).toString()]}) + }) fetch(request) } @@ -118,7 +134,7 @@ async function check_local_slop(url) { async function check_remote_slop(urls) { const check_url = new URL("/check", API_URL) - const request = new Request(check_url, {method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({slop_urls: urls})}) + const request = new Request(check_url, {method: "POST", headers: { "Content-Type": "application/json", "Bearer": get_access_token() }, body: JSON.stringify({slop_urls: urls})}) const response = await fetch(request) let domain_objects = await response.json() domain_objects.forEach((domain) => {insert_slop(domain.domain_name, "/")}) @@ -195,8 +211,30 @@ function get_access_token() { return access_token } -browser.runtime.onInstalled.addListener(on_install_handler) -browser.runtime.onStartup.addListener(get_access_token) -browser.pageAction.onClicked.addListener(on_button_clicked_handler) -browser.webNavigation.onCommitted.addListener(update_page_action_icon) -browser.runtime.onMessage.addListener(message_listener) +async function submit_login_form() { + + const login_url = new URL("/login", API_URL) + + const request = new Request(login_url, + { + method: "POST", + body: new FormData(login_form) + }) + + const response = await fetch(request) + + if(response.ok) { + const body = await response.json() + const token = body.access_token + localStorage.setItem("accessToken", token) + } + +} + +if(!login_form) { + browser.runtime.onInstalled.addListener(on_install_handler) + browser.runtime.onStartup.addListener(get_access_token) + browser.pageAction.onClicked.addListener(on_button_clicked_handler) + browser.webNavigation.onCommitted.addListener(update_page_action_icon) + browser.runtime.onMessage.addListener(message_listener) +}