diff --git a/lib/controllers/spaces_controller.dart b/lib/controllers/spaces_controller.dart index 646f48d..ca217a5 100644 --- a/lib/controllers/spaces_controller.dart +++ b/lib/controllers/spaces_controller.dart @@ -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> { ) .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