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"));