import React, { useState } from "react"; import { toast } from "sonner"; import AppHeader from "src/components/AppHeader"; import { Button } from "src/components/ui/button"; import { Input } from "src/components/ui/input"; import { Label } from "src/components/ui/label"; import { useAlbyMe } from "src/hooks/useAlbyMe"; import { useInfo } from "src/hooks/useInfo"; import { handleRequestError } from "src/utils/handleRequestError"; import { request } from "src/utils/request"; export default function NodeAlias() { const { data: info, mutate: reloadInfo } = useInfo(); const { data: albyMe } = useAlbyMe(); const [nodeAlias, setNodeAlias] = useState(""); const [isLoading, setIsLoading] = useState(false); // Initialize nodeAlias with current value when info loads React.useEffect(() => { if (info?.nodeAlias !== undefined) { setNodeAlias(info.nodeAlias); } }, [info?.nodeAlias]); const hasPaid = albyMe?.subscription?.plan_code; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!hasPaid) { toast.error("Please upgrade to change your node alias"); return; } setIsLoading(true); try { await request("/api/node/alias", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ nodeAlias }), }); await reloadInfo(); toast("Alias changed. Restart your node to apply the change.", { description: "Your node alias has been updated successfully.", }); } catch (error) { console.error("Failed to update node alias:", error); handleRequestError("Failed to update node alias", error); } finally { setIsLoading(false); } }; return (