"use client"; import { Bomb, FolderSync } from "lucide-react"; import { useState } from "react"; import { toast } from "sonner"; import { ActionButton } from "@/components/action-button"; import { CdnChooser } from "@/components/chooser"; import { Field, FieldDescription, FieldTitle } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; import { Switch } from "@/components/ui/switch"; import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group"; import { shared } from "@/lib/comms"; import type { SlipProvider } from "@/lib/slip-checker"; import { forceRefresh, setSlipCheckProvider, syncAmber, toggleDonatePaymentMethod, toggleEnka, } from "./api"; import { Broadcaster } from "./broadcaster"; import { Section } from "./page"; export function SettingsServicesSection({ enka: enkaInitial, donPp: initialDonPp, donTmn: initialDonTmn, slipProvider: initialSlipProvider, }: { enka: boolean; donPp: boolean; donTmn: boolean; slipProvider: SlipProvider; }) { const [syncResult, setSyncResult] = useState(""); const [enka, setEnka] = useState(enkaInitial); const [donPp, setDonPp] = useState(initialDonPp); const [donTmn, setDonTmn] = useState(initialDonTmn); const [pathToReload, setPathToReload] = useState(""); const [debug] = shared.state("debug"); const [slipProvider, setSlipProvider] = useState(initialSlipProvider); const [savingSlipProvider, setSavingSlipProvider] = useState(false); async function changeSlipProvider(value: string) { if ( (value !== "slipok" && value !== "slip2go") || value === slipProvider || savingSlipProvider ) return; setSavingSlipProvider(true); try { const result = await setSlipCheckProvider(value); if (result.success) { setSlipProvider(result.provider); toast.success("เปลี่ยนบริการตรวจสอบสลิปแล้ว"); } else { toast.error(result.message); } } catch { toast.error("ไม่สามารถเปลี่ยนบริการตรวจสอบสลิปได้ กรุณาลองใหม่"); } finally { setSavingSlipProvider(false); } } async function sync() { return syncAmber().then(setSyncResult); } return (
( setEnka(v), toggleEnka(v).then(forceRefresh.bind(null, "/artifact")) )} /> เปิดใช้การดึงตัวละครใน Artifact
Sync Amber FORCE RELOAD
setPathToReload(v.target.value)} /> Reload
บริการตรวจสอบสลิป SlipOK Slip2Go ใช้สำหรับรับกรรมและโดเนท มีผลกับการตรวจสอบสลิปครั้งถัดไป Donate Payment Method
( setDonPp(v), toggleDonatePaymentMethod("donatePromptpay", v).then( forceRefresh.bind(null, "/donate"), ) )} /> Promptpay
( setDonTmn(v), toggleDonatePaymentMethod("donateTruemoney", v).then( forceRefresh.bind(null, "/donate"), ) )} /> Truemoney
{debug && (
Test file input
)} {syncResult && (
{syncResult}
)}
); }