@page "/Users"
@using System.Net.Http.Headers
@using System.Reflection
@using Spacebar.AdminApi.Models
@using Spacebar.AdminAPI.TestClient.Services
@using ArcaneLibs.Blazor.Components
@using ArcaneLibs.Extensions
@inject Config Config
@inject ILocalStorageService LocalStorage
Users
Displayed columns
@foreach (var column in DisplayedColumns) {
var value = column.Value;
{
DisplayedColumns[column.Key] = b;
StateHasChanged();
})"/>
@column.Key.Name
}
Got @UserList.Count users.
@{
var columns = DisplayedColumns.Where(kvp => kvp.Value).Select(kvp => kvp.Key).ToList();
}
@foreach (var column in columns) {
| @column.Name |
}
Actions |
@foreach (var user in UserList.Where(x => !x.Deleted).OrderByDescending(x=>x.MessageCount)) {
@foreach (var column in columns) {
| @column.GetValue(user) |
}
Delete
|
}
@code {
private Dictionary DisplayedColumns { get; set; } = typeof(UserModel).GetProperties()
.ToDictionary(p => p, p => p.Name == "Username" || p.Name == "Id" || p.Name == "MessageCount");
private List UserList { get; set; } = new();
protected override async Task OnInitializedAsync() {
var hc = new StreamingHttpClient();
hc.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Config.AccessToken);
// var request = new HttpRequestMessage(HttpMethod.Get, Config.AdminUrl + "/_spacebar/admin/users/");
var response = hc.GetAsyncEnumerableFromJsonAsync(Config.AdminUrl + "/_spacebar/admin/users/");
// if (!response.IsSuccessStatusCode) throw new Exception(await response.Content.ReadAsStringAsync());
// var content = response.Content.ReadFromJsonAsAsyncEnumerable();
await foreach (var user in response) {
// Console.WriteLine(user.ToJson(indent: false, ignoreNull: true));
UserList.Add(user!);
if(UserList.Count % 1000 == 0)
StateHasChanged();
}
StateHasChanged();
}
}