remoteSubspaceRelationsProvider top-level property

dynamic remoteSubspaceRelationsProvider
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 [];
  }
});