ws/realtime-tree: реалтайм-переименование и смена иконки страницы не доходят до других клиентов (регрессия) #72
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Найдено в multi-aspect code review всех изменений с коммита
053a9c0d(ветка develop).Грань: regression · Severity: warning
Где:
apps/server/src/ws/ws.gateway.ts:64-69; apps/server/src/ws/listeners/page-ws.listener.ts:22-25Проблема
handleMessage стал no-op (клиентский relay убран намеренно), а серверный PageWsListener сознательно не обрабатывает PAGE_UPDATED (см. комментарий page-ws.listener.ts:22-25). Клиент по-прежнему шлёт operation:"updateOne" (title-editor.tsx, space-tree-row.tsx), но сервер его не ретранслирует. Итог: пользователь A переименовал страницу или сменил иконку — B/C видят устаревший заголовок/иконку в сайдбаре и хлебных крошках до полного рефетча/перезагрузки. Регрессия ранее работавшего поведения (create/duplicate/restore покрыты новыми PAGE_CREATED/PAGE_RESTORED, не покрыт только updateOne).
Предлагаемый фикс
Добавить обработчик PAGE_UPDATED в PageWsListener, вещающий updateOne (title/icon) только при реальном изменении заголовка/иконки (обогатить событие диффом title/icon), через restriction-aware emitTreeEvent, отфильтровывая content-only сохранения. До этого — не убирать клиентский relay updateOne.