import "./SubDebug.css";
import { useState } from "react";
import useRelayState from "Feed/RelayState";
import Tabs, { Tab } from "Element/Tabs";
import { System } from "System";
import { unwrap } from "Util";
import useSystemState from "Hooks/useSystemState";
import { RawReqFilter } from "@snort/nostr";
import { useCopy } from "useCopy";
function RelayInfo({ id }: { id: string }) {
const state = useRelayState(id);
return
{state?.connected ? <>{id}> : {id}}
;
}
function Queries() {
const qs = useSystemState();
const { copy } = useCopy();
function countElements(filters: Array) {
let total = 0;
for (const f of filters) {
for (const v of Object.values(f)) {
if (Array.isArray(v)) {
total += v.length;
}
}
}
return total;
}
function queryInfo(q: {
id: string;
filters: Array;
closing: boolean;
subFilters: Array;
}) {
return (
{q.closing ? {q.id} : <>{q.id}>}
copy(JSON.stringify(q.filters))} className="pointer">
Filters: {q.filters.length} ({countElements(q.filters)} elements)
copy(JSON.stringify(q.subFilters))} className="pointer">
SubQueries: {q.subFilters.length} ({countElements(q.subFilters)} elements)
);
}
return (
<>
Queries
{qs?.queries.map(v => queryInfo(v))}
>
);
}
const SubDebug = () => {
const [onTab, setTab] = useState(0);
function connections() {
return (
<>
Connections:
{[...System.Sockets.keys()].map(k => (
))}
>
);
}
const tabs: Tab[] = [
{
text: "Connections",
value: 0,
},
{
text: "Queries",
value: 1,
},
];
return (
setTab(v.value)} tab={unwrap(tabs.find(a => a.value === onTab))} />
{(() => {
switch (onTab) {
case 0:
return connections();
case 1:
return ;
default:
return null;
}
})()}
);
};
export default SubDebug;