@inherits LocalizableComponentBase @* The root's personas (/clientapi/avatar/private): each one used in turn, and a new one made. Personas are never linked to one another: no server, PrivaPub's included, shows that they share a root. *@
@foreach (var persona in CascadingState.Personas) {
@(persona.Name ?? persona.UserName) @persona.Handle @if (persona.Id == CascadingState.PersonaId) { @Localizer["in use"] } else { @Localizer["Use"] }
}
@Localizer["A new persona"]
@@
@Localizer["Make the persona"]
@code { [Inject] AuthService AuthService { get; set; } InsertAvatarForm form = new(); bool isSaving; string switching; protected override void OnInitialized() => IsLoading = false; async Task Use(ViewAvatar persona) { switching = persona.Id; var result = await CascadingState.SwitchPersona(persona.Id); switching = null; if (result.IsInvalid) Toast.AddResponseError(result); } async Task Create() { isSaving = true; form.UserName = form.UserName?.Trim().TrimStart('@').ToLowerInvariant(); var result = await AuthService.CreatePersona(form); isSaving = false; if (result.IsInvalid) { Toast.AddResponseError(result); return; } form = new(); await CascadingState.ReloadPersonas(); Toast.AddResponseSuccess(Localizer["Persona made."]); } }