e067e7a1f6
* feat(web): show file statuses in review * fix(web): address review status feedback * fix(web): deduplicate review sources * fix(web): align review progress identities * fix(web): guard review status labels * fix(web): enforce file status exhaustiveness * perf(web): index review progress sources * fix(web): preserve files during status hydration * fix(web): align multi-repo review progress
36 lines
874 B
TypeScript
36 lines
874 B
TypeScript
export type FileChangeStatus = "modified" | "added" | "deleted" | "untracked" | "renamed";
|
|
|
|
export function normalizeFileChangeStatus(status?: string): FileChangeStatus {
|
|
switch (status) {
|
|
case "added":
|
|
case "modified":
|
|
case "deleted":
|
|
case "untracked":
|
|
case "renamed":
|
|
return status;
|
|
case "removed":
|
|
return "deleted";
|
|
default:
|
|
return "modified";
|
|
}
|
|
}
|
|
|
|
export function fileChangeStatusLabel(status: FileChangeStatus, oldPath?: string): string {
|
|
switch (status) {
|
|
case "added":
|
|
return "Added";
|
|
case "untracked":
|
|
return "Untracked";
|
|
case "modified":
|
|
return "Modified";
|
|
case "deleted":
|
|
return "Deleted";
|
|
case "renamed":
|
|
return oldPath ? `Moved from ${oldPath}` : "Moved";
|
|
default: {
|
|
const exhaustiveStatus: never = status;
|
|
return exhaustiveStatus;
|
|
}
|
|
}
|
|
}
|