Pipeline/frontend/src/lib/display-name.ts

34 lines
983 B
TypeScript

import type { OrganizationMemberRead } from "@/api/generated/model";
export const DEFAULT_HUMAN_LABEL = "User";
export const normalizeDisplayName = (
value: string | null | undefined,
): string | null => {
const trimmed = (value ?? "").trim();
return trimmed.length > 0 ? trimmed : null;
};
export const resolveHumanActorName = (
value: string | null | undefined,
fallbackName: string = DEFAULT_HUMAN_LABEL,
): string => {
const normalized = normalizeDisplayName(value);
if (!normalized) return fallbackName;
const lowered = normalized.toLowerCase();
if (lowered === "admin" || lowered === "user") {
return fallbackName;
}
return normalized;
};
export const resolveMemberDisplayName = (
member: OrganizationMemberRead | null | undefined,
fallbackName: string = DEFAULT_HUMAN_LABEL,
): string =>
resolveHumanActorName(
normalizeDisplayName(member?.user?.preferred_name) ??
normalizeDisplayName(member?.user?.name),
fallbackName,
);