From d5b0743382a3cf7779016b23acd8c060733c0faa Mon Sep 17 00:00:00 2001 From: simoleo89 Date: Wed, 27 May 2026 19:08:38 +0200 Subject: [PATCH] feat(navigator): wrap sub-views in WidgetErrorBoundary Each of the 5 Navigator sub-views (RoomCreator, DoorState, RoomInfo, RoomLink, RoomSettings) is now wrapped in its own WidgetErrorBoundary so a crash inside one no longer takes down the others. Matches the pattern already applied to the 13 room widgets + 20 furniture widgets. Zero behavioural change in the happy path. yarn typecheck + yarn test --run + yarn lint:hooks all clean (only the 3 pre-existing floorplan failures remain, unrelated to Navigator). --- src/components/navigator/NavigatorView.tsx | 25 ++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/components/navigator/NavigatorView.tsx b/src/components/navigator/NavigatorView.tsx index 3ff6be6..16c76cb 100644 --- a/src/components/navigator/NavigatorView.tsx +++ b/src/components/navigator/NavigatorView.tsx @@ -7,7 +7,7 @@ import createRoomImg from '../../assets/images/navigator/create_room.png'; import randomRoomImg from '../../assets/images/navigator/random_room.png'; import promoteRoomImg from '../../assets/images/navigator/promote_room.png'; import { CreateLinkEvent, LocalizeText, SendMessageComposer, TryVisitRoom } from '../../api'; -import { Flex, Text } from '../../common'; +import { Flex, Text, WidgetErrorBoundary } from '../../common'; import { useNavigatorActions, useNavigatorData, useNavigatorUiState, useNavigatorUiStore, useNitroEvent } from '../../hooks'; import { NavigatorDoorStateView } from './views/NavigatorDoorStateView'; import { NavigatorRoomCreatorView } from './views/NavigatorRoomCreatorView'; @@ -197,13 +197,26 @@ export const NavigatorView: FC<{}> = props => } - { isCreatorOpen && } + { isCreatorOpen && + + + } } - - { isRoomInfoOpen && useNavigatorUiStore.getState().setRoomInfoOpen(false) } /> } - { isRoomLinkOpen && useNavigatorUiStore.getState().setRoomLinkOpen(false) } /> } - + + + + { isRoomInfoOpen && + + useNavigatorUiStore.getState().setRoomInfoOpen(false) } /> + } + { isRoomLinkOpen && + + useNavigatorUiStore.getState().setRoomLinkOpen(false) } /> + } + + + ); };