Watch
1
0
Fork
You've already forked nexus
0
forked from Nexus/nexus

fix no room selected after leave / init

This commit is contained in:
Henry Hiles 2026-10-16 17:13:25 -04:00
commit 81851bdc42
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs
6 changed files with 65 additions and 27 deletions

View file

@ -22,9 +22,10 @@ import "package:nexus/widgets/room_summary_sheet.dart";
import "package:nexus/widgets/room_menu_button.dart";
import "package:nexus/widgets/space_hierarchy_sheet.dart";
import "package:nexus/controllers/key.dart";
import "package:nexus/controllers/selected_room.dart";
import "package:nexus/controllers/selected_space.dart";
import "package:nexus/controllers/rooms.dart";
import "package:nexus/controllers/spaces.dart";
import "package:collection/collection.dart";
// Needed for navigation_rail_m3e (#65).
import "package:flutter/material.dart" as old_mat;
@ -217,23 +218,8 @@ class const SpacesRail({super.key}) extends ConsumerWidget {
class const RoomsPane({super.key}) extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final selectedSpaceId = ref.watch(
KeyController.provider(KeyController.spaceKey)
.select((async) => async.requireValue),
);
final selectedRoomId = ref.watch(
KeyController.provider(KeyController.roomKey)
.select((async) => async.requireValue),
);
final selectedSpace = ref.watch(
SpacesController.provider.select((async) {
final spaces = async.requireValue;
return spaces.firstWhereOrNull(
(space) => space.id == selectedSpaceId,
) ??
spaces.first;
}),
);
final selectedRoomId = ref.watch(SelectedRoomController.provider);
final selectedSpace = ref.watch(SelectedSpaceController.provider)!;
final isDm = selectedSpace.id == "dms";
final spaceMetadata = selectedSpace.room?.metadata;