about summary refs log tree commit diff
path: root/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListCategory.razor
blob: 709f2d7e344b5e4676032e87b089352da75e5241 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
@using MatrixRoomUtils.Core.StateEventTypes
@using MatrixRoomUtils.Core.StateEventTypes.Spec
@using MatrixRoomUtils.Web.Classes.Constants
<details>
    <summary>@roomType (@rooms.Count)</summary>
    @foreach (var room in rooms) {
        <div class="room-list-item">
            <RoomListItem RoomInfo="@room" ShowOwnProfile="@(roomType == "Room")"></RoomListItem>
            @if (RoomVersionDangerLevel(room) != 0) {
                <MatrixRoomUtils.Web.Shared.SimpleComponents.LinkButton Color="@(RoomVersionDangerLevel(room) == 2 ? "#ff0000" : "#ff8800")" href="@($"/Rooms/Create?Import={room.Room.RoomId}")">Upgrade room</MatrixRoomUtils.Web.Shared.SimpleComponents.LinkButton>
            }
            <MatrixRoomUtils.Web.Shared.SimpleComponents.LinkButton href="@($"/Rooms/{room.Room.RoomId}/Timeline")">View timeline</MatrixRoomUtils.Web.Shared.SimpleComponents.LinkButton>
            <MatrixRoomUtils.Web.Shared.SimpleComponents.LinkButton href="@($"/Rooms/{room.Room.RoomId}/State/View")">View state</MatrixRoomUtils.Web.Shared.SimpleComponents.LinkButton>
            <MatrixRoomUtils.Web.Shared.SimpleComponents.LinkButton href="@($"/Rooms/{room.Room.RoomId}/State/Edit")">Edit state</MatrixRoomUtils.Web.Shared.SimpleComponents.LinkButton>
            
            @if (roomType == "Space") {
                <RoomListSpace Space="@room"></RoomListSpace>
            }
        </div>
    }
</details>
<br/>

@code {

    [Parameter]
    public KeyValuePair<string, List<RoomInfo>> Category { get; set; }
    
    [Parameter]
    public ProfileResponseEventData? GlobalProfile { get; set; }

    private string roomType => Category.Key;
    private List<RoomInfo> rooms => Category.Value;

    private int RoomVersionDangerLevel(RoomInfo room) {
        var roomVersion = room.StateEvents.FirstOrDefault(x=>x.Type == "m.room.create");
        if (roomVersion is null) return 0;
        var roomVersionContent = roomVersion.TypedContent as RoomCreateEventData;
        if (roomVersionContent is null) return 0;
        if (RoomConstants.DangerousRoomVersions.Contains(roomVersionContent.RoomVersion)) return 2;
        if (roomVersionContent.RoomVersion != RoomConstants.RecommendedRoomVersion) return 1;
        return 0;
    }

}