'use client'; import useGlobalStore from '@/config/use-global'; import { updateUserBasicInfo } from '@/services/admin/user'; import { zodResolver } from '@hookform/resolvers/zod'; import { Button } from '@workspace/ui/components/button'; import { Card, CardContent, CardHeader, CardTitle } from '@workspace/ui/components/card'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@workspace/ui/components/form'; import { Input } from '@workspace/ui/components/input'; import { Switch } from '@workspace/ui/components/switch'; import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; import { UploadImage } from '@workspace/ui/custom-components/upload-image'; import { unitConversion } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; import { useForm } from 'react-hook-form'; import { toast } from 'sonner'; import * as z from 'zod'; const basicInfoSchema = z.object({ avatar: z.string().optional(), balance: z.number().optional(), commission: z.number().optional(), gift_amount: z.number().optional(), refer_code: z.string().optional(), referer_id: z.number().optional(), referral_percentage: z.number().optional(), only_first_purchase: z.boolean().optional(), is_admin: z.boolean().optional(), password: z.string().optional(), enable: z.boolean(), }); type BasicInfoValues = z.infer; export function BasicInfoForm({ user, refetch }: { user: API.User; refetch: () => void }) { const t = useTranslations('user'); const { common } = useGlobalStore(); const { currency } = common; const form = useForm({ resolver: zodResolver(basicInfoSchema), defaultValues: { avatar: user.avatar, balance: user.balance, commission: user.commission, gift_amount: user.gift_amount, refer_code: user.refer_code, referer_id: user.referer_id, referral_percentage: user.referral_percentage, only_first_purchase: user.only_first_purchase, is_admin: user.is_admin, enable: user.enable, }, }); async function onSubmit(data: BasicInfoValues) { await updateUserBasicInfo({ user_id: user.id, telegram: user.telegram, ...data, } as API.UpdateUserBasiceInfoRequest); toast.success(t('updateSuccess')); refetch(); } return (
{t('basicInfoTitle')} ( {t('accountEnable')} )} /> ( {t('administrator')} )} />
( {t('balance')} unitConversion('centsToDollars', value)} formatOutput={(value) => unitConversion('dollarsToCents', value)} onValueChange={(value) => { form.setValue(field.name, value as number); }} /> )} /> ( {t('commission')} unitConversion('centsToDollars', value)} formatOutput={(value) => unitConversion('dollarsToCents', value)} onValueChange={(value) => { form.setValue(field.name, value as number); }} /> )} /> ( {t('giftAmount')} unitConversion('centsToDollars', value)} formatOutput={(value) => unitConversion('dollarsToCents', value)} onValueChange={(value) => { form.setValue(field.name, value as number); }} /> )} />
( {t('referralCode')} { form.setValue(field.name, value as string); }} /> )} /> ( {t('referrerUserId')} { form.setValue(field.name, value as number); }} /> )} />
( {t('referralPercentage')} { form.setValue(field.name, value as number); }} /> )} /> ( {t('onlyFirstPurchase')} )} /> ( {t('avatar')} { form.setValue(field.name, value as string); }} suffix={ form.setValue('avatar', value as string)} /> } /> )} /> ( {t('password')} )} />
); }