Files
João Salavisa ce82e2a4ab fix(i18n): externalize remaining frontend copy (#2616)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-08-13 11:11:46 +01:00

55 lines
1.8 KiB
TypeScript

import type { AzureDevOpsTaskPullRequest } from "@/lib/types/azure-devops";
export type AzureDevOpsPullRequestPresentation = {
provider: "azure_devops";
labelKey: 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", labelKey: "azuredevops:prStatusCompleted", tone: "success" };
}
if (status === "abandoned") {
return { provider: "azure_devops", labelKey: "azuredevops:prStatusAbandoned", tone: "muted" };
}
if (pullRequest.policyState === "failure") {
return {
provider: "azure_devops",
labelKey: "azuredevops:prStatusPolicyFailed",
tone: "danger",
};
}
if (pullRequest.reviewState === "rejected") {
return {
provider: "azure_devops",
labelKey: "azuredevops:prStatusChangesRequested",
tone: "danger",
};
}
if (pullRequest.isDraft) {
return { provider: "azure_devops", labelKey: "azuredevops:prStatusDraft", tone: "muted" };
}
if (pullRequest.policyState === "pending") {
return {
provider: "azure_devops",
labelKey: "azuredevops:prStatusPolicyRunning",
tone: "warning",
};
}
if (pullRequest.reviewState === "waiting") {
return {
provider: "azure_devops",
labelKey: "azuredevops:prStatusWaitingForReview",
tone: "warning",
};
}
if (pullRequest.reviewState === "approved" && pullRequest.policyState === "success") {
return { provider: "azure_devops", labelKey: "azuredevops:prStatusReady", tone: "success" };
}
return { provider: "azure_devops", labelKey: "azuredevops:prStatusActive", tone: "info" };
}