From ddd8a36c6498daa456f6b801c04d99c48c8577cd Mon Sep 17 00:00:00 2001 From: mrleo1nid <43583385+mrleo1nid@users.noreply.github.com> Date: Tue, 6 Oct 2026 20:02:11 +0300 Subject: [PATCH] Refresh node load in location picker without page reload Invalidate available-inbounds when the create dialog opens, after a config is created or revoked, and on realtime config status changes. Co-Authored-By: Claude Opus 5.5 --- frontend/src/features/configs/ConfigCard.tsx | 1 + frontend/src/features/configs/CreateConfigDialog.tsx | 11 ++++++++++- frontend/src/shared/realtime/RealtimeProvider.tsx | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/frontend/src/features/configs/ConfigCard.tsx b/frontend/src/features/configs/ConfigCard.tsx index 5d9a0af..172fff7 100644 --- a/frontend/src/features/configs/ConfigCard.tsx +++ b/frontend/src/features/configs/ConfigCard.tsx @@ -49,6 +49,7 @@ export function ConfigCard({ config }: { config: VpnConfigDto }) { toast.success(t('configs.revoked')) setDetailsOpen(false) await queryClient.invalidateQueries({ queryKey: ['my-configs'] }) + await queryClient.invalidateQueries({ queryKey: ['available-inbounds'] }) }, onError: () => toast.error(t('auth.genericError')), }) diff --git a/frontend/src/features/configs/CreateConfigDialog.tsx b/frontend/src/features/configs/CreateConfigDialog.tsx index d19f418..93080dc 100644 --- a/frontend/src/features/configs/CreateConfigDialog.tsx +++ b/frontend/src/features/configs/CreateConfigDialog.tsx @@ -59,6 +59,8 @@ export function CreateConfigDialog({ inbounds }: { inbounds: AvailableInboundDto onSuccess: async () => { toast.success(t('configs.created')) await queryClient.invalidateQueries({ queryKey: ['my-configs'] }) + // Новый конфиг меняет загрузку ноды (AvailableInboundDto.loadPercent/nodeConfigCount). + await queryClient.invalidateQueries({ queryKey: ['available-inbounds'] }) setOpen(false) setInboundId('') setLabel('') @@ -80,7 +82,14 @@ export function CreateConfigDialog({ inbounds }: { inbounds: AvailableInboundDto }) return ( - + { + // Загрузку нод меняют и другие пользователи — при каждом открытии берём свежую. + if (next) void queryClient.invalidateQueries({ queryKey: ['available-inbounds'] }) + setOpen(next) + }} + >