diff --git a/src/hooks/show-status-toast.tsx b/src/hooks/show-status-toast.tsx index cdf860b..ccbba66 100644 --- a/src/hooks/show-status-toast.tsx +++ b/src/hooks/show-status-toast.tsx @@ -1,42 +1,11 @@ import { - AlertTriangleIcon, - BanIcon, - CircleCheckIcon, LucideIcon, XIcon, } from "lucide-react"; import { toast } from "sonner"; import { Button } from "@/components/ui/button"; import type { Status } from "@/generated/client"; - -const getColorClass = (code: Status) => { - const colorMap: Record = { - PD: "text-gray-400", - QD: "text-gray-400", - CP: "text-yellow-400", - CE: "text-yellow-500", - CS: "text-green-500", - RU: "text-blue-400", - TLE: "text-blue-500", - MLE: "text-purple-500", - RE: "text-orange-500", - AC: "text-green-500", - WA: "text-red-500", - SE: "text-red-500", - }; - return colorMap[code] || "text-gray-500"; -}; - -const statusMap = new Map([ - ["SE", { icon: BanIcon, message: "System Error" }], - ["CS", { icon: CircleCheckIcon, message: "Compilation Success" }], - ["CE", { icon: AlertTriangleIcon, message: "Compilation Error" }], - ["TLE", { icon: AlertTriangleIcon, message: "Time Limit Exceeded" }], - ["MLE", { icon: AlertTriangleIcon, message: "Memory Limit Exceeded" }], - ["RE", { icon: AlertTriangleIcon, message: "Runtime Error" }], - ["AC", { icon: CircleCheckIcon, message: "Accepted" }], - ["WA", { icon: AlertTriangleIcon, message: "Wrong Answer" }], -]); +import { getStatusColorClass, statusMap } from "@/lib/status"; const StatusToast = ({ t, @@ -88,7 +57,7 @@ export function showStatusToast({ icon: XIcon, message: "Unknown Error", }; - const colorClass = getColorClass(status); + const colorClass = getStatusColorClass(status); toast.custom((t) => ( - ), - { - duration: Infinity, - } - ); + )); } diff --git a/src/lib/status.ts b/src/lib/status.ts new file mode 100644 index 0000000..5f53c2f --- /dev/null +++ b/src/lib/status.ts @@ -0,0 +1,40 @@ +import { + AlertTriangleIcon, + BanIcon, + CircleCheckIcon, +} from "lucide-react"; +import { LucideIcon } from "lucide-react"; +import { Status } from "@/generated/client"; + +export const getStatusColorClass = (status: Status) => { + const colorMap: Record = { + PD: "text-gray-500", + QD: "text-gray-500", + CP: "text-yellow-500", + CE: "text-yellow-500", + CS: "text-green-500", + RU: "text-blue-500", + TLE: "text-blue-500", + MLE: "text-purple-500", + RE: "text-orange-500", + AC: "text-green-500", + WA: "text-red-500", + SE: "text-red-500", + }; + return colorMap[status] || "text-gray-500"; +}; + +export const statusMap = new Map([ + ["PD", { icon: AlertTriangleIcon, message: "Pending" }], + ["QD", { icon: AlertTriangleIcon, message: "Queued" }], + ["CP", { icon: AlertTriangleIcon, message: "Compiling" }], + ["CE", { icon: AlertTriangleIcon, message: "Compilation Error" }], + ["CS", { icon: CircleCheckIcon, message: "Compilation Success" }], + ["RU", { icon: AlertTriangleIcon, message: "Running" }], + ["TLE", { icon: AlertTriangleIcon, message: "Time Limit Exceeded" }], + ["MLE", { icon: AlertTriangleIcon, message: "Memory Limit Exceeded" }], + ["RE", { icon: AlertTriangleIcon, message: "Runtime Error" }], + ["AC", { icon: CircleCheckIcon, message: "Accepted" }], + ["WA", { icon: AlertTriangleIcon, message: "Wrong Answer" }], + ["SE", { icon: BanIcon, message: "System Error" }], +]);