| 1 | import { mergebotStatusPill } from "@t3tools/client-runtime/mergebot-status-pill"; |
| 2 | import { isMergebotRepository, type EnvironmentId } from "@t3tools/contracts"; |
| 3 | |
| 4 | import { useServerConfigs } from "~/state/entities"; |
| 5 | import { useMergebotPullRequestStatus } from "~/state/mergebot"; |
| 6 | |
| 7 | import { MergebotStatusPill } from "./MergebotStatusPill"; |
| 8 | |
| 9 | /** True when the environment routes this repository's PRs through Mergebot. */ |
| 10 | export 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. */ |
| 19 | export 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 | } |