From 95600cf6da1c6fbd5ee9f1a5de57b17503d4fe9c Mon Sep 17 00:00:00 2001 From: Tom van der Lee Date: Tue, 30 Jun 2026 22:23:27 +0200 Subject: Filter based on subdomains --- src/components/RequestList/RequestList.tsx | 50 ++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) (limited to 'src/components/RequestList') diff --git a/src/components/RequestList/RequestList.tsx b/src/components/RequestList/RequestList.tsx index 8217229..1ab53d8 100644 --- a/src/components/RequestList/RequestList.tsx +++ b/src/components/RequestList/RequestList.tsx @@ -21,9 +21,14 @@ type EnabledMethods = { [method in Method]: boolean; }; +type EnabledHosts = { + [host: string]: boolean; +}; + export default function RequestList() { const { darkMode } = useContext(SettingsContext); const { + config, calls: requests, selectedCall, setSelectedCall, @@ -33,6 +38,20 @@ export default function RequestList() { const [search, setSearch] = useState(""); const [enableRegex, setEnableRegex] = useState(false); + const [hosts, setHosts] = useState({}); + + useEffect(() => { + setHosts((oldValues) => + (config?.urls ?? []).reduce((acc, url) => { + const { host } = new URL(url); + return { + ...acc, + [host]: oldValues[host] ?? true, + }; + }, {}) + ); + }, [config?.urls]); + const [methods, setMethods] = useState({ GET: true, HEAD: true, @@ -95,6 +114,17 @@ export default function RequestList() { return requests .reverse() + .filter((request) => { + const [_, hostHeader] = request.request.headers.find( + ([key]) => key.toLowerCase() === "host" + ) ?? [null, null]; + + if (hostHeader === null) { + return true; + } + + return hosts[hostHeader] ?? false; + }) .filter( (request) => enabledMethods.length === 0 || @@ -103,7 +133,7 @@ export default function RequestList() { .filter( (request) => search === "" || searchRegex.test(request.request.path) ); - }, [requests, search, enabledMethods, enableRegex]); + }, [requests, search, hosts, enabledMethods, enableRegex]); return (
@@ -204,6 +234,20 @@ export default function RequestList() { onChange={() => setEnableRegex(!enableRegex)} /> + + Hosts + {Object.entries(hosts).map(([host, enabled]) => ( + + setHosts((values) => ({ ...values, [host]: !enabled })) + } + /> + ))} + Method {Object.entries(methods).map(([method, enabled]) => ( @@ -212,7 +256,9 @@ export default function RequestList() { type="switch" label={method} checked={enabled} - onChange={() => setMethods({ ...methods, [method]: !enabled })} + onChange={() => + setMethods((values) => ({ ...values, [method]: !enabled })) + } /> ))} -- cgit v1.2.3