summary refs log tree commit diff
path: root/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/UsersDelete.razor
diff options
context:
space:
mode:
Diffstat (limited to 'extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/UsersDelete.razor')
-rw-r--r--extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/UsersDelete.razor70
1 files changed, 0 insertions, 70 deletions
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/UsersDelete.razor b/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/UsersDelete.razor
deleted file mode 100644

index 98a3e0fc7..000000000 --- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/UsersDelete.razor +++ /dev/null
@@ -1,70 +0,0 @@ -@page "/Users/Delete/{Id}" -@using System.Net.Http.Headers -@using System.Text.Json -@using System.Text.Json.Nodes -@using ArcaneLibs.Extensions -@using Spacebar.AdminApi.Models -@using Spacebar.AdminAPI.TestClient.Services -@inject Config Config -<h3>UsersDelete - @Id</h3> - -Deleted @ChannelDeleteProgress.Sum(x=>x.Value.Deleted) messages so far! -@foreach (var (channel, progress) in ChannelDeleteProgress.Where(x=>x.Value.Deleted != x.Value.Total).OrderByDescending(x=>x.Value.Progress)) { - <div>@channel: @progress.Total total, @progress.Deleted deleted</div> - <progress max="@progress.Total" value="@progress.Deleted"></progress> -} - -@if (Done) { - <h1>Done!</h1> -} - -@code { - - [Parameter] - public required string Id { get; set; } - - private Dictionary<string, DeleteProgress> ChannelDeleteProgress { get; set; } = new(); - - private bool Done { get; set; } - - protected override async Task OnInitializedAsync() { - var hc = new StreamingHttpClient(); - hc.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Config.AccessToken); - var response = await hc.GetAsync(Config.AdminUrl + $"/_spacebar/admin/Users/{Id}/delete?messageDeleteChunkSize=100"); - if (!response.IsSuccessStatusCode) throw new Exception(await response.Content.ReadAsStringAsync()); - var content = response.Content.ReadFromJsonAsAsyncEnumerable<AsyncActionResult>(); - await foreach (var actionResult in content) { - Console.WriteLine(actionResult.ToJson(indent: false)); - switch (actionResult.MessageType) { - case "STATS": { - var data = JsonSerializer.Deserialize<JsonObject>(actionResult.Data.ToJson()); - ChannelDeleteProgress = data!["messages_per_channel"]! - .Deserialize<Dictionary<string, int>>()! - .ToDictionary(x=>x.Key, x=>new DeleteProgress { Total = x.Value }); - break; - } - case "BULK_DELETED": { - var data = JsonSerializer.Deserialize<JsonObject>(actionResult.Data.ToJson()); - ChannelDeleteProgress[data!["channel_id"]!.ToString()].Deleted += data!["deleted"]!.GetValue<int>(); - break; - } - default: { - Console.WriteLine($"Unknown message type: {actionResult.MessageType}"); - break; - } - } - - StateHasChanged(); - await Task.Delay(1); - } - - Done = true; - StateHasChanged(); - } - - private class DeleteProgress { - public int Total { get; set; } - public int Deleted { get; set; } = 0; - public float Progress => (float)Deleted / Total; - } -} \ No newline at end of file