From 0c73862bbe3442843ba3beef851f73f39d1bae2f Mon Sep 17 00:00:00 2001 From: MHSanaei Date: Fri, 12 Jun 2026 19:19:42 +0200 Subject: [PATCH] fix(clients): invalidate Xray config cache after client mutations Client add/update/remove also rewrite settings.clients on each attached inbound, so the Xray config query could go stale. Invalidate it alongside the clients and inbounds buckets. --- frontend/src/hooks/useClients.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/frontend/src/hooks/useClients.ts b/frontend/src/hooks/useClients.ts index c619cbd01..e266710dc 100644 --- a/frontend/src/hooks/useClients.ts +++ b/frontend/src/hooks/useClients.ts @@ -255,12 +255,6 @@ export function useClients() { return { ...live, total: serverSummary.total || live.total }; }, [allClientStats, onlines, expireDiff, trafficDiff, listQuery.data?.summary]); - // Client mutations (add/update/remove/attach/detach/resetTraffic/…) all - // mutate inbound rows server-side too — adding a client appends to - // settings.clients on each attached inbound, the slim list's per-inbound - // client count is derived from that. Invalidate both buckets so the - // Inbounds page and any open edit modal pick up the new shape without - // a manual reload. const invalidateAll = useCallback( () => { markLocalInvalidate(); @@ -268,6 +262,7 @@ export function useClients() { return Promise.all([ queryClient.invalidateQueries({ queryKey: keys.clients.root() }), queryClient.invalidateQueries({ queryKey: keys.inbounds.root() }), + queryClient.invalidateQueries({ queryKey: keys.xray.config() }), ]); }, [queryClient],