Add room preview dialog

Closes #79
This commit is contained in:
Henry Hiles 2026-09-29 13:55:17 -04:00
commit 281bab0202
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs
9 changed files with 230 additions and 204 deletions

View file

@ -0,0 +1,36 @@
import "package:collection/collection.dart";
import "package:flutter_riverpod/experimental/mutation.dart";
import "package:nexus/controllers/key.dart";
import "package:nexus/controllers/spaces.dart";
import "package:nexus/models/space.dart";
extension FocusRoom on MutationTarget {
Future<void> focusRoom(String id) async {
final spaces = container.read(SpacesController.provider);
if (spaces.firstWhereOrNull((space) => space.id == id) case Space _?) {
return await container
.read(KeyController.provider(KeyController.spaceKey).notifier)
.set(id);
}
final parent = spaces.firstWhereOrNull(
(space) =>
space.children.any((room) => room.metadata?.id == id) ||
space.subSpaces.any(
(sub) =>
sub.room.metadata?.id == id ||
sub.children.any((room) => room.metadata?.id == id),
),
);
if (parent == null) return;
await container
.read(KeyController.provider(KeyController.spaceKey).notifier)
.set(parent.id);
await container
.read(KeyController.provider(KeyController.roomKey).notifier)
.set(id);
}
}