fix(default): improve billing settings forms
This commit is contained in:
+23
-11
@@ -1,4 +1,5 @@
|
||||
import * as z from 'zod'
|
||||
import type { ChangeEvent } from 'react'
|
||||
import type { Resolver } from 'react-hook-form'
|
||||
import { zodResolver } from '@hookform/resolvers/zod'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
@@ -25,9 +26,13 @@ const quotaSchema = z.object({
|
||||
PreConsumedQuota: z.coerce.number().min(0),
|
||||
QuotaForInviter: z.coerce.number().min(0),
|
||||
QuotaForInvitee: z.coerce.number().min(0),
|
||||
TopUpLink: z.string().url().optional().or(z.literal('')),
|
||||
'general_setting.docs_link': z.string().url().optional().or(z.literal('')),
|
||||
'quota_setting.enable_free_model_pre_consume': z.boolean(),
|
||||
TopUpLink: z.string(),
|
||||
general_setting: z.object({
|
||||
docs_link: z.string(),
|
||||
}),
|
||||
quota_setting: z.object({
|
||||
enable_free_model_pre_consume: z.boolean(),
|
||||
}),
|
||||
})
|
||||
|
||||
type QuotaFormValues = z.infer<typeof quotaSchema>
|
||||
@@ -41,6 +46,13 @@ export function QuotaSettingsSection({
|
||||
}: QuotaSettingsSectionProps) {
|
||||
const { t } = useTranslation()
|
||||
const updateOption = useUpdateOption()
|
||||
const handleNumberChange =
|
||||
(onChange: (value: number | string) => void) =>
|
||||
(event: ChangeEvent<HTMLInputElement>) => {
|
||||
onChange(
|
||||
event.target.value === '' ? '' : event.currentTarget.valueAsNumber
|
||||
)
|
||||
}
|
||||
|
||||
const { form, handleSubmit, isDirty, isSubmitting } =
|
||||
useSettingsForm<QuotaFormValues>({
|
||||
@@ -79,8 +91,8 @@ export function QuotaSettingsSection({
|
||||
<FormControl>
|
||||
<Input
|
||||
type='number'
|
||||
value={field.value as number}
|
||||
onChange={(e) => field.onChange(e.target.valueAsNumber)}
|
||||
value={field.value ?? ''}
|
||||
onChange={handleNumberChange(field.onChange)}
|
||||
name={field.name}
|
||||
onBlur={field.onBlur}
|
||||
ref={field.ref}
|
||||
@@ -103,8 +115,8 @@ export function QuotaSettingsSection({
|
||||
<FormControl>
|
||||
<Input
|
||||
type='number'
|
||||
value={field.value as number}
|
||||
onChange={(e) => field.onChange(e.target.valueAsNumber)}
|
||||
value={field.value ?? ''}
|
||||
onChange={handleNumberChange(field.onChange)}
|
||||
name={field.name}
|
||||
onBlur={field.onBlur}
|
||||
ref={field.ref}
|
||||
@@ -127,8 +139,8 @@ export function QuotaSettingsSection({
|
||||
<FormControl>
|
||||
<Input
|
||||
type='number'
|
||||
value={field.value as number}
|
||||
onChange={(e) => field.onChange(e.target.valueAsNumber)}
|
||||
value={field.value ?? ''}
|
||||
onChange={handleNumberChange(field.onChange)}
|
||||
name={field.name}
|
||||
onBlur={field.onBlur}
|
||||
ref={field.ref}
|
||||
@@ -151,8 +163,8 @@ export function QuotaSettingsSection({
|
||||
<FormControl>
|
||||
<Input
|
||||
type='number'
|
||||
value={field.value as number}
|
||||
onChange={(e) => field.onChange(e.target.valueAsNumber)}
|
||||
value={field.value ?? ''}
|
||||
onChange={handleNumberChange(field.onChange)}
|
||||
name={field.name}
|
||||
onBlur={field.onBlur}
|
||||
ref={field.ref}
|
||||
|
||||
Reference in New Issue
Block a user