import {Save} from 'lucide-react'; import {FormEvent, useState} from 'react'; import {upsertProfileInviteCode} from '../api/adminApiClient'; import type {ProfileInviteCodeAdminResponse} from '../api/adminApiTypes'; import {handlePageError} from './pageUtils'; interface AdminInviteCodePageProps { token: string; result: ProfileInviteCodeAdminResponse | null; onUnauthorized: (message?: string) => void; onResultChange: (result: ProfileInviteCodeAdminResponse) => void; } export function AdminInviteCodePage({ token, result, onUnauthorized, onResultChange, }: AdminInviteCodePageProps) { const [inviteCode, setInviteCode] = useState(''); const [metadataText, setMetadataText] = useState('{}'); const [errorMessage, setErrorMessage] = useState(''); const [isSaving, setIsSaving] = useState(false); async function handleSave(event: FormEvent) { event.preventDefault(); if (isSaving) { return; } setErrorMessage(''); setIsSaving(true); try { const response = await upsertProfileInviteCode(token, { inviteCode: inviteCode.trim(), metadata: parseMetadata(metadataText), }); onResultChange(response); } catch (error: unknown) { handlePageError(error, onUnauthorized, setErrorMessage); } finally { setIsSaving(false); } } return (

邀请码

注册链路预置码