import { cn } from "~/lib/utils"; import { run } from "~/utils/utils"; export function SubscriptionStatus({ status, errorMsg, reset, }: { status: "idle" | "connecting" | "pending" | "error"; errorMsg: string | undefined; reset: () => void; }) { return (
{ switch (status) { case "idle": case "connecting": return "bg-white text-gray-500 dark:bg-gray-900 dark:text-gray-400"; case "error": return "bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200"; case "pending": return "bg-emerald-100 text-emerald-800 dark:bg-emerald-900 dark:text-emerald-200"; } }), )} > {run(() => { switch (status) { case "idle": case "connecting": // treat idle and connecting the same return (
Connecting... {errorMsg && " (There are connection problems)"} {errorMsg}
); case "error": // something went wrong return (
Error - {errorMsg}
); case "pending": // we are polling for new messages return
Connected - awaiting messages
; } })}
); }