Source-only publication of reviewed commit 64e96a7f423673dc29ad56485be9fc79bce8af1c.
Passed in isolation: focused frontend/backend tests, race checks, TypeScript typecheck, lint, Go compilation, Flowgram build, and deterministic SDK build/tests.
Not accepted as a production release: Next.js export/native assembly remains blocked by environment memory limits; browser interaction and MySQL staging acceptance remain unverified. No production server, database/schema, runtime configuration, deployment, release tag, or workflow execution was performed.
Expected source tree: 0a4a7528e9.
11 lines
1.3 KiB
TypeScript
11 lines
1.3 KiB
TypeScript
import { ServiceStatus } from "@/lib/generated/enums"
|
|
import type { AvailabilityReason } from "@/lib/api/support-availability"
|
|
type Translate = (key: string, values?: Record<string, string | number>) => string
|
|
const statusKeys: Record<ServiceStatus, string> = {
|
|
[ServiceStatus.Idle]: "ready", [ServiceStatus.Busy]: "busy", [ServiceStatus.Break]: "break", [ServiceStatus.Unavailable]: "unavailable", [ServiceStatus.Vacation]: "vacation",
|
|
}
|
|
export function availabilityStatusLabel(status: ServiceStatus, t: Translate) { return t(`supportAvailability.status.${statusKeys[status] ?? "unknown"}`) }
|
|
export function availabilityStatusOptions(t: Translate, withVacation = true) { return Object.values(ServiceStatus).filter((value): value is ServiceStatus => typeof value === "number" && (withVacation || value !== ServiceStatus.Vacation)).map(value => ({ value: String(value), label: availabilityStatusLabel(value, t) })) }
|
|
const reasonKeys = new Set<AvailabilityReason>(["eligible", "profile_disabled", "user_disabled", "team_disabled", "outside_hours", "offline", "busy", "break", "unavailable", "vacation", "auto_assign_disabled", "capacity"])
|
|
export function availabilityReasonLabel(reason: AvailabilityReason, t: Translate) { return t(`supportAvailability.reason.${reasonKeys.has(reason) ? reason : "unknown"}`) }
|