remoteSubspaceRelationsProvider top-level property
final
Implementation
final remoteSubspaceRelationsProvider =
FutureProvider.family<List<SpaceHierarchyRoomInfo>, String>(
(ref, spaceId) async {
try {
final relatedSpaces =
await ref.watch(spaceRelationsOverviewProvider(spaceId).future);
final toIgnore = List.of(relatedSpaces.knownSubspaces);
toIgnore.addAll(relatedSpaces.parents.map((e) => e.getRoomIdStr()));
if (relatedSpaces.mainParent != null) {
toIgnore.add(relatedSpaces.mainParent!.getRoomIdStr());
}
toIgnore.add(spaceId); // the hierarchy also gives us ourselfes ...
final roomHierarchy =
await ref.watch(spaceRemoteRelationsProvider(spaceId).future);
// filter out the known rooms
return roomHierarchy
.where((r) => r.isSpace() && !toIgnore.contains(r.roomIdStr()))
.toList();
} on SpaceNotFound {
return [];
}
});