"use client"; import { useEffect, useState } from "react"; import { useTranslations } from "next-intl"; import { Skeleton } from "@/components/ui"; import { fetchMyChatSettings, updateChatSettings, } from "@/entities/chats/actions"; import type { IChatSettings } from "@/entities/chats/types"; import styles from "./AutoTopUpToggle.module.scss"; export default function AutoTopUpToggle() { const t = useTranslations("Profile"); const [loading, setLoading] = useState(true); const [isUpdating, setIsUpdating] = useState(false); const [settings, setSettings] = useState(null); useEffect(() => { let mounted = true; (async () => { try { const res = await fetchMyChatSettings(); if (mounted && res.data) { setSettings(res.data.settings); } } catch (e) { // silent failure // eslint-disable-next-line no-console console.error("Failed to fetch chat settings", e); } finally { if (mounted) setLoading(false); } })(); return () => { mounted = false; }; }, []); const onToggle = async () => { if (!settings || isUpdating) return; const next = { ...settings, autoTopUp: !settings.autoTopUp }; setSettings(next); // optimistic setIsUpdating(true); try { const res = await updateChatSettings(next); if (res.data) { setSettings(res.data.settings); } } catch (e) { // revert on error silently setSettings(settings); // eslint-disable-next-line no-console console.error("Failed to update chat settings", e); } finally { setIsUpdating(false); } }; if (loading) { return ; } return (
{t("auto_top_up.title")}
{t("auto_top_up.description")}
); }