39 lines
1.5 KiB
TypeScript
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" };
|
|
}
|