Files
kandev/apps/web/components/task/task-pr-info.ts
T

29 lines
968 B
TypeScript

import type { TaskStatusSummary } from "@/lib/types/task-status-summary";
export type TaskPRInfo = {
number: number;
state: string;
aggregateState?: string;
autoFixEnabled?: boolean;
autoMergeEnabled?: boolean;
};
function capitalize(value: string): string {
return value.length > 0 ? value[0].toUpperCase() + value.slice(1) : value;
}
/** Map the bounded task-level PR projection to the shared sidebar icon shape. */
export function taskPRInfoFromSummary(
summary: TaskStatusSummary | null | undefined,
): TaskPRInfo | undefined {
const pullRequest = summary?.pull_request;
if (!pullRequest?.number) return undefined;
return {
number: pullRequest.number,
state: capitalize(pullRequest.state ?? pullRequest.aggregate_state ?? "open"),
aggregateState: pullRequest.aggregate_state,
...(pullRequest.auto_fix_enabled ? { autoFixEnabled: true } : {}),
...(pullRequest.auto_merge_enabled ? { autoMergeEnabled: true } : {}),
};
}