about summary refs log tree commit diff
path: root/BugMine.Web/Pages/DevTools.razor
blob: afed0cc055b931167bbe74d965c6cd21868e04be (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
46
47
48
49
50
51
52
53
54
@page "/DevTools"
@using LibMatrix.Homeservers
@using LibMatrix.EventTypes.Spec.State
<h3>DevTools</h3>

<LinkButton OnClick="@MassCreateProjects">Mass create projects</LinkButton>
<LinkButton OnClick="@DestroyAllProjects">Destroy all projects</LinkButton>

@code {

    private BugMineClient? Client { get; set; }

    protected override async Task OnInitializedAsync() {
        Client = await BugMineStorage.GetCurrentSessionOrNavigate();
    }

    private async Task DestroyAllProjects() {
        var ss = new SemaphoreSlim(4, 4);
        await foreach (var proj in Client.Homeserver.GetJoinedRoomsByType(BugMineProject.RoomType)) {
            // Task.Run(async () => {
                // await ss.WaitAsync();
                await proj.SendStateEventAsync(RoomNameEventContent.EventId, new RoomNameEventContent() {
                    Name = "Disbanded BugMine project."
                });
                await proj.SendStateEventAsync(RoomJoinRulesEventContent.EventId, new RoomJoinRulesEventContent() {
                    JoinRule = RoomJoinRulesEventContent.JoinRules.Private
                });
                await proj.SendStateEventAsync(RoomCanonicalAliasEventContent.EventId, new RoomCanonicalAliasEventContent() {
                    Alias = null
                });
                await proj.LeaveAsync("Disbanded room.");
                // ss.Release();
            // });
        }
    }

    private async Task MassCreateProjects() {
        // var rooms = await Client.Homeserver.GetJoinedRooms();
        // List<string> roomNames = (await Task.WhenAll(rooms.Select(x => x.GetNameAsync()))).Where(x => x != null).ToList();
        for (int i = 0; i < 20; i++) {
            Task.Run(async () => {
                // var randomName = roomNames[Random.Shared.Next(roomNames.Count)];
                var proj = await Client.CreateProject(new() {
                    Name = /*randomName + */Guid.NewGuid().ToString()[..8]
                });
                
                await proj.CreateIssue(new() {
                    Name = "meow"
                });
            });
        }
    }

}