Files
kandev/apps/web/components/azure-devops/azure-devops-status.ts
T
2026-07-21 08:40:26 +01:00

39 lines
1.5 KiB
TypeScript

import type { AzureDevOpsTaskPullRequest } from "@/lib/types/azure-devops";
export type AzureDevOpsPullRequestPresentation = {
provider: "azure_devops";
label: string;
tone: "success" | "danger" | "warning" | "muted" | "info";
};
export function getAzureDevOpsPullRequestPresentation(
pullRequest: AzureDevOpsTaskPullRequest,
): AzureDevOpsPullRequestPresentation {
const status = pullRequest.status.toLowerCase();
if (status === "completed") {
return { provider: "azure_devops", label: "Completed", tone: "success" };
}
if (status === "abandoned") {
return { provider: "azure_devops", label: "Abandoned", tone: "muted" };
}
if (pullRequest.policyState === "failure") {
return { provider: "azure_devops", label: "Policy failed", tone: "danger" };
}
if (pullRequest.reviewState === "rejected") {
return { provider: "azure_devops", label: "Changes requested", tone: "danger" };
}
if (pullRequest.isDraft) {
return { provider: "azure_devops", label: "Draft", tone: "muted" };
}
if (pullRequest.policyState === "pending") {
return { provider: "azure_devops", label: "Policy running", tone: "warning" };
}
if (pullRequest.reviewState === "waiting") {
return { provider: "azure_devops", label: "Waiting for review", tone: "warning" };
}
if (pullRequest.reviewState === "approved" && pullRequest.policyState === "success") {
return { provider: "azure_devops", label: "Ready", tone: "success" };
}
return { provider: "azure_devops", label: "Active", tone: "info" };
}