Use account data for filtering DMs

This commit is contained in:
Henry Hiles 2026-03-01 13:58:31 -05:00
commit 2b4da17a35
No known key found for this signature in database

View file

@ -1,6 +1,7 @@
import "package:fast_immutable_collections/fast_immutable_collections.dart";
import "package:flutter/material.dart";
import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:nexus/controllers/account_data_controller.dart";
import "package:nexus/controllers/rooms_controller.dart";
import "package:nexus/controllers/top_level_spaces_controller.dart";
import "package:nexus/controllers/space_edges_controller.dart";
@ -57,12 +58,28 @@ class SpacesController extends Notifier<IList<Space>> {
)
.map((e) => e.value);
final accountData = ref.watch(AccountDataController.provider);
final directMessages = IMap(
accountData["m.direct"]?.content ?? {},
).values.expand((element) => element);
final homeRooms = otherRooms
.where((room) => room.metadata?.dmUserId == null)
.where(
(room) =>
directMessages.any(
(directMessage) => directMessage == room.metadata?.id,
) ==
false,
)
.toIList();
final dmRooms = otherRooms
.where((room) => room.metadata?.dmUserId != null)
.where(
(room) => directMessages.any(
(directMessage) => directMessage == room.metadata?.id,
),
)
.toIList();
final topLevelSpacesList = topLevelSpaceIds