fix(ws): resync sidebar tree on socket reconnect (RT-24) #66

Closed
opened 2026-06-21 01:56:55 +03:00 by Ghost · 0 comments

Источник: red-team-аудит, RT-24 (docs/red-team-report.md).

Что происходит

Нет resync дерева на reconnect и нет версии/seq (apps/client/src/features/user/user-provider.tsx:36-38). События, прошедшие во время дисконнекта (вайфай моргнул, сон), теряются навсегда → дерево тихо расходится с реальностью до ручного F5. Заодно помогает RT-2 (отозванный из спейса увидит обрезанное дерево после reconnect).

Фикс

На reconnect (отличая от первого connect) инвалидировать sidebar-tree query:

// user-provider.tsx — on RECONNECT refetch the sidebar tree through the authorized
// API so the view re-converges after a gap.
let firstConnect = true;
newSocket.on("connect", () => {
  if (!firstConnect) queryClient.invalidateQueries({ queryKey: ["sidebar-pages"] });
  firstConnect = false;
});

Цена / приоритет

Минимальная правка, реюз react-query. (Опц. развитие — per-space tree version/seq, отдельной задачей.)

**Источник:** red-team-аудит, RT-24 (`docs/red-team-report.md`). ### Что происходит Нет resync дерева на reconnect и нет версии/seq (`apps/client/src/features/user/user-provider.tsx:36-38`). События, прошедшие во время дисконнекта (вайфай моргнул, сон), теряются навсегда → дерево тихо расходится с реальностью до ручного F5. Заодно помогает RT-2 (отозванный из спейса увидит обрезанное дерево после reconnect). ### Фикс На reconnect (отличая от первого connect) инвалидировать sidebar-tree query: ```ts // user-provider.tsx — on RECONNECT refetch the sidebar tree through the authorized // API so the view re-converges after a gap. let firstConnect = true; newSocket.on("connect", () => { if (!firstConnect) queryClient.invalidateQueries({ queryKey: ["sidebar-pages"] }); firstConnect = false; }); ``` ### Цена / приоритет Минимальная правка, реюз react-query. (Опц. развитие — per-space tree version/seq, отдельной задачей.)
Ghost added the bug label 2026-06-21 02:27:20 +03:00
Ghost closed this issue 2026-06-21 14:10:30 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: vvzvlad/gitmost#66