import { toast } from "sonner";
import { isAPIError } from "@turbostarter/api/utils";
import { useTranslation } from "@turbostarter/i18n";
import { cn } from "@turbostarter/ui";
import { buttonVariants } from "@turbostarter/ui-web/button";
import { Icons } from "@turbostarter/ui-web/icons";
const InsufficientCredits = () => {
const { t } = useTranslation("common");
const list = [
t("credits.description", { count: 5 }),
t("credits.description2"),
t("credits.description3"),
];
return (
);
};
const RateLimit = () => {
const { t } = useTranslation("common");
const list = [
t("rateLimit.description"),
t("rateLimit.description2"),
t("rateLimit.description3"),
];
return (
);
};
const parseError = (error: Error) => {
try {
const parsed = JSON.parse(error.message);
return parsed;
} catch {
return error.message;
}
};
export const useAIError = () => {
const { t } = useTranslation("common");
const onError = (error: Error) => {
console.error(error);
const parsed = parseError(error);
if (!isAPIError(parsed)) {
return toast.error(error.message || t("error.general"));
}
if (parsed.code === "error.insufficientCredits") {
return toast();
}
if (parsed.code === "error.rateLimit") {
return toast();
}
};
return { onError };
};