fix(provider-form): prevent duplicate submissions on rapid button clicks (#1352)

Make ProviderForm.handleSubmit async and await onSubmit so react-hook-form's
isSubmitting state is tracked. Disable submit buttons in AddProviderDialog and
EditProviderDialog while submission is in flight via onSubmittingChange callback.
This commit is contained in:
Hexi
2026-03-15 15:24:17 +08:00
committed by GitHub
parent d8a7bc32db
commit 5c03de53f7
3 changed files with 18 additions and 4 deletions
@@ -28,6 +28,7 @@ export function EditProviderDialog({
isProxyTakeover = false,
}: EditProviderDialogProps) {
const { t } = useTranslation();
const [isFormSubmitting, setIsFormSubmitting] = useState(false);
// 默认使用传入的 provider.settingsConfig,若当前编辑对象是"当前生效供应商",则尝试读取实时配置替换初始值
const [liveSettings, setLiveSettings] = useState<Record<
@@ -197,6 +198,7 @@ export function EditProviderDialog({
<Button
type="submit"
form="provider-form"
disabled={isFormSubmitting}
className="bg-primary text-primary-foreground hover:bg-primary/90"
>
<Save className="h-4 w-4 mr-2" />
@@ -210,6 +212,7 @@ export function EditProviderDialog({
submitLabel={t("common.save")}
onSubmit={handleSubmit}
onCancel={() => onOpenChange(false)}
onSubmittingChange={setIsFormSubmitting}
initialData={initialData}
showButtons={false}
/>