import React, { useEffect, useState } from "react"; import ReactDOM from "react-dom"; import memory from "./memory"; import { RequestCluster } from "./request-cluster"; import { Tab, useEmitter } from "./util"; async function getTabByID(id: number) { const tabs = await browser.tabs.query({ currentWindow: true }); return tabs.find((tab) => tab.id == id); } async function getCurrentTab() { console.log("getCurrentTab"); const [tab] = await browser.tabs.query({ active: true, windowId: browser.windows.WINDOW_ID_CURRENT, }); return tab.id; } const TabDropdown = ({ setPickedTab, pickedTab, }: { setPickedTab: (tab_id: number) => void; pickedTab: number; }) => { const [tabs, setTabs] = useState([]); useEffect(() => { console.log("useEffect!"); browser.tabs.query({ currentWindow: true }).then(setTabs); }, []); return ( ); }; const StolenDataRow = ({ tabID, shorthost, refreshToken, minValueLength, }: { tabID: number; shorthost: string; refreshToken: number; minValueLength: number; }) => { const cluster = memory.getClustersForTab(tabID)[shorthost]; return (

{cluster.id} {cluster.hasCookies() ? "🍪" : ""} x {cluster.requests.length}

{cluster .getCookiesContent({ minValueLength }) .map(([cookie_name, cookie_value]) => ( ))}
{cookie_name} {cookie_value}
); }; const StolenData = ({ pickedTab, refreshToken, minValueLength, }: { pickedTab: number | null; refreshToken: number; minValueLength: number; }) => { const [tab, setTab] = useState(null); useEffect(() => { getTabByID(pickedTab).then(setTab); }, [pickedTab]); if (!pickedTab || !tab) { return
; } const clusters = Object.values(memory.getClustersForTab(pickedTab)).sort( RequestCluster.sortCompare ); return (
{" "}
{tab.title} {clusters.map((cluster) => ( ))}
); }; const Sidebar = () => { console.log("rendering!"); const [pickedTab, setPickedTab] = useState(null); const [minValueLength, setMinValueLength] = useState(3); const counter = useEmitter(memory); return ( <>
setMinValueLength(parseInt(e.target.value))} /> ); }; ReactDOM.render(, document.getElementById("app"));