From a5de24a5452ad0267cbaef88d1883b7ab3ed9eef Mon Sep 17 00:00:00 2001 From: Slinetrac Date: Mon, 17 Nov 2025 18:16:13 +0800 Subject: [PATCH] fix(webdav): prevent dialog refresh loop and stabilize busy-state handling --- src/components/setting/mods/backup-viewer.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/components/setting/mods/backup-viewer.tsx b/src/components/setting/mods/backup-viewer.tsx index b9b62b76c..185c45d6e 100644 --- a/src/components/setting/mods/backup-viewer.tsx +++ b/src/components/setting/mods/backup-viewer.tsx @@ -9,7 +9,7 @@ import { } from "@mui/material"; import { useLockFn } from "ahooks"; import type { ReactNode, Ref } from "react"; -import { useImperativeHandle, useState } from "react"; +import { useCallback, useImperativeHandle, useState } from "react"; import { useTranslation } from "react-i18next"; import { BaseDialog, DialogRef } from "@/components/base"; @@ -67,6 +67,13 @@ export function BackupViewer({ ref }: { ref?: Ref }) { } }); + const setWebdavBusy = useCallback( + (loading: boolean) => { + setBusyAction(loading ? "webdav" : null); + }, + [setBusyAction], + ); + return ( }) { open={webdavDialogOpen} onClose={() => setWebdavDialogOpen(false)} onBackupSuccess={() => openHistory("webdav")} - setBusy={(loading) => setBusyAction(loading ? "webdav" : null)} + setBusy={setWebdavBusy} /> );