feat(navigator): reactive favourites via fine-grained store (P3)

Move favourite room ids out of the useBetween navigator store into a
dedicated Zustand store. useNavigatorFavourite(roomId) subscribes only
to s.ids.has(roomId) (a boolean), so a FavouriteChangedEvent for one
room no longer re-renders every favourite-aware view. apply() returns
the same state reference when membership is unchanged.
This commit is contained in:
simoleo89
2026-05-31 01:03:31 +02:00
parent 641593c3ef
commit e610cfeef4
9 changed files with 103 additions and 41 deletions
@@ -8,7 +8,7 @@ describe('navigator filter shapes (smoke)', () =>
{
const { result } = renderHook(() => useNavigatorData());
expect(Object.keys(result.current).sort()).toEqual([
'categories', 'eventCategories', 'favouriteRoomIds',
'categories', 'eventCategories',
'navigatorData', 'navigatorSearches',
'topLevelContext', 'topLevelContexts'
].sort());