@using System.Collections.ObjectModel @using MatrixUtils.Abstractions Manage space
@Children.Count children @if (_shouldRenderChildren) {

Breadcrumb: @Breadcrumbs

Joined:

Unjoined:

@foreach (var room in Unjoined) {

@room.Room.RoomId

} @*
*@ @* *@ @*
*@ }
@code { [Parameter] public RoomInfo Space { get; set; } [Parameter, CascadingParameter] public List KnownRooms { get; set; } = new(); [Parameter, CascadingParameter] public string? Breadcrumbs { get => _breadcrumbs + Space.Room.RoomId; set => _breadcrumbs = value; } private ObservableCollection Children { get; set; } = new(); private Collection Unjoined { get; set; } = new(); protected override async Task OnInitializedAsync() { if (Breadcrumbs == null) throw new ArgumentNullException(nameof(Breadcrumbs)); await Task.Delay(Random.Shared.Next(1000, 10000)); var rooms = Space.Room.AsSpace.GetChildrenAsync(); var hs = await RMUStorage.GetCurrentSessionOrNavigate(); var joinedRooms = await hs.GetJoinedRooms(); await foreach (var room in rooms) { if (Breadcrumbs.Contains(room.RoomId)) continue; var roomInfo = KnownRooms.FirstOrDefault(x => x.Room.RoomId == room.RoomId); if (roomInfo is null) { roomInfo = new RoomInfo(room); KnownRooms.Add(roomInfo); } if(joinedRooms.Any(x=>x.RoomId == room.RoomId)) Children.Add(roomInfo); else Unjoined.Add(roomInfo); } await base.OnInitializedAsync(); } private bool _shouldRenderChildren = false; private string? _breadcrumbs; private Task SpaceChildrenOpened() { if (_shouldRenderChildren) return Task.CompletedTask; _shouldRenderChildren = true; Console.WriteLine($"[RoomList] Rendering children of {Space.Room.RoomId}"); return Task.CompletedTask; } }