background page

This commit is contained in:
hamid zarghami
2026-05-06 15:25:26 +03:30
parent 25822b05a6
commit f42fc17025
6 changed files with 42 additions and 24 deletions
+15 -2
View File
@@ -35,6 +35,7 @@ export const useUpdateCatalog = () => {
});
const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
const pendingParamsRef = useRef<Parameters<typeof api.updateCatalog>[0] | null>(null);
const [isScheduledSaving, setIsScheduledSaving] = useState(false);
const scheduleUpdate = useCallback(
@@ -42,12 +43,17 @@ export const useUpdateCatalog = () => {
if (timeoutRef.current) {
clearTimeout(timeoutRef.current);
}
pendingParamsRef.current = params;
setIsScheduledSaving(true);
timeoutRef.current = setTimeout(() => {
const pendingParams = pendingParamsRef.current;
timeoutRef.current = null;
pendingParamsRef.current = null;
setIsScheduledSaving(false);
mutation.mutate(params);
if (pendingParams) {
mutation.mutate(pendingParams);
}
}, delayMs);
},
[mutation],
@@ -57,10 +63,17 @@ export const useUpdateCatalog = () => {
() => () => {
if (timeoutRef.current) {
clearTimeout(timeoutRef.current);
timeoutRef.current = null;
}
// اگر کاربر قبل از پایان debounce از ادیتور خارج شد،
// آخرین تغییرات معلق را همان لحظه ذخیره کن.
if (pendingParamsRef.current) {
mutation.mutate(pendingParamsRef.current);
pendingParamsRef.current = null;
}
setIsScheduledSaving(false);
},
[],
[mutation],
);
return {