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
;
}
})}
);
}