@page "/User/Manage"
@using LibMatrix.Homeservers
@using LibMatrix.EventTypes.Spec.State
@using ArcaneLibs.Extensions
Manage user - @HomeServer?.WhoAmI?.UserId
@if (Profile is not null) {
Profile
Display name:
Avatar URL:
Update profile
Update profile (restore room overrides)
@if (Busy) {
Busy processing profile update, please do not leave this page...
}
}
@code {
private AuthenticatedHomeserverGeneric? HomeServer { get; set; }
private ProfileResponseEventContent? Profile { get; set; }
private bool Busy { get; set; } = false;
protected override async Task OnInitializedAsync() {
HomeServer = await MRUStorage.GetCurrentSessionOrNavigate();
if (HomeServer is null) return;
if (HomeServer.WhoAmI?.UserId is not null)
Profile = (await HomeServer.GetProfileAsync(HomeServer.WhoAmI.UserId)).DeepClone();
await base.OnInitializedAsync();
}
private async Task AvatarChanged(InputFileChangeEventArgs arg) {
var res = await HomeServer.UploadFile(arg.File.Name, arg.File.OpenReadStream(), arg.File.ContentType);
Console.WriteLine(res);
Profile.AvatarUrl = res;
StateHasChanged();
}
private async Task UpdateProfile(bool restoreRoomProfiles = false) {
Busy = true;
StateHasChanged();
await HomeServer.UpdateProfileAsync(Profile, restoreRoomProfiles);
Busy = false;
StateHasChanged();
}
}