1import { mergebotStatusPill } from "@t3tools/client-runtime/mergebot-status-pill";
2import { isMergebotRepository, type EnvironmentId } from "@t3tools/contracts";
3
4import { useServerConfigs } from "~/state/entities";
5import { useMergebotPullRequestStatus } from "~/state/mergebot";
6
7import { MergebotStatusPill } from "./MergebotStatusPill";
8
9/** True when the environment routes this repository's PRs through Mergebot. */
10export function useIsMergebotRepository(
11 environmentId: EnvironmentId,
12 repository: string | undefined,
13) {
14 const configuration = useServerConfigs().get(environmentId)?.mergebot;
15 return repository !== undefined && isMergebotRepository(configuration, repository);
16}
17
18/** The row-3 status pill for a thread's current PR. */
19export function ThreadMergebotPill(props: {
20 environmentId: EnvironmentId;
21 repository: string;
22 number: number;
23}) {
24 const status = useMergebotPullRequestStatus(props.environmentId, props.repository, props.number);
25 const pill = status ? mergebotStatusPill(status) : null;
26 return status && pill ? <MergebotStatusPill pill={pill} status={status} /> : null;
27}