Files
upstream-yaak/apps/yaak-client/hooks/useHeadersTab.tsx
upstream-mirror 906fb231cc
Some checks failed
Lint and Test / Lint/Test (push) Has been cancelled
Generate Sponsors README / deploy (push) Has been skipped
snapshot of https://github.com/mountain-loop/yaak.git (main, 2026-09-23; blobs > 131072B omitted)
2026-09-23 17:39:41 +05:00

32 lines
929 B
TypeScript

import { useMemo } from "react";
import { CountBadge } from "../components/core/CountBadge";
import type { TabItem } from "../components/core/Tabs/Tabs";
import type { HeaderModel } from "./useInheritedHeaders";
import { useInheritedHeaders } from "./useInheritedHeaders";
export function useHeadersTab<T extends string>(
tabValue: T,
model: HeaderModel | null,
label?: string,
) {
const inheritedHeaders = useInheritedHeaders(model);
return useMemo<TabItem[]>(() => {
if (model == null) return [];
const allHeaders = [
...inheritedHeaders,
...(model.model === "grpc_request" ? model.metadata : model.headers),
];
const numHeaders = allHeaders.filter((h) => h.name).length;
const tab: TabItem = {
value: tabValue,
label: label ?? "Headers",
rightSlot: <CountBadge count={numHeaders} />,
};
return [tab];
}, [inheritedHeaders, label, model, tabValue]);
}