diff --git a/frontend/src/hooks/useXraySetting.ts b/frontend/src/hooks/useXraySetting.ts index ed9f59a6..13119940 100644 --- a/frontend/src/hooks/useXraySetting.ts +++ b/frontend/src/hooks/useXraySetting.ts @@ -197,13 +197,21 @@ export function useXraySetting(): UseXraySettingResult { }, [queryClient]); const saveMut = useMutation({ - mutationFn: async () => - HttpUtil.post('/panel/xray/update', { - xraySetting: xraySettingRef.current, - outboundTestUrl: outboundTestUrlRef.current || DEFAULT_TEST_URL, - }), - onSuccess: (msg) => { - if (msg?.success) queryClient.invalidateQueries({ queryKey: keys.xray.config() }); + mutationFn: async () => { + const sentXraySetting = xraySettingRef.current; + const sentTestUrl = outboundTestUrlRef.current || DEFAULT_TEST_URL; + const msg = await HttpUtil.post('/panel/xray/update', { + xraySetting: sentXraySetting, + outboundTestUrl: sentTestUrl, + }); + return { msg, sentXraySetting, sentTestUrl }; + }, + onSuccess: ({ msg, sentXraySetting, sentTestUrl }) => { + if (!msg?.success) return; + oldXraySettingRef.current = sentXraySetting; + oldOutboundTestUrlRef.current = sentTestUrl; + setSaveDisabled(true); + queryClient.invalidateQueries({ queryKey: keys.xray.config() }); }, });