about summary refs log tree commit diff
path: root/BugMine.Web/Pages/DevTools.razor
diff options
context:
space:
mode:
Diffstat (limited to 'BugMine.Web/Pages/DevTools.razor')
-rw-r--r--BugMine.Web/Pages/DevTools.razor54
1 files changed, 54 insertions, 0 deletions
diff --git a/BugMine.Web/Pages/DevTools.razor b/BugMine.Web/Pages/DevTools.razor
new file mode 100644
index 0000000..f8fc408
--- /dev/null
+++ b/BugMine.Web/Pages/DevTools.razor
@@ -0,0 +1,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(16, 16);
+        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 < 5; 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"
+                });
+            });
+        }
+    }
+
+}
\ No newline at end of file