@page "/settings/migration" @using Iceshrimp.Frontend.Core.Services @using Iceshrimp.Frontend.Localization @using Microsoft.AspNetCore.Authorization @using Microsoft.Extensions.Localization @using Microsoft.AspNetCore.Components.Sections @using Iceshrimp.Assets.PhosphorIcons @using Iceshrimp.Shared.Schemas.Web @using Iceshrimp.Frontend.Components @using Iceshrimp.Frontend.Core.Miscellaneous @attribute [Authorize] @layout SettingsLayout @inject ApiService Api; @inject GlobalComponentSvc Global; @inject IStringLocalizer Loc; @inject NavigationManager Nav; @Loc["Migration"] @if (State is State.Loaded) {

@Loc["Move to this account from an older account"]

@foreach (var alias in Status.Aliases) { }
} @code { private MigrationSchemas.MigrationStatusResponse Status { get; set; } = null!; private State State { get; set; } = State.Loading; private StateButton AliasButton { get; set; } = null!; private string Alias { get; set; } = ""; protected override async Task OnInitializedAsync() { Status = await Api.Migrations.GetMigrationStatusAsync(); State = State.Loaded; } private async Task AddAlias() { if (string.IsNullOrWhiteSpace(Alias)) return; var acct = Alias.Trim().TrimStart('@').Split('@'); if (string.IsNullOrWhiteSpace(acct[0])) return; AliasButton.State = StateButton.StateEnum.Loading; try { var user = await Api.Users.LookupUserAsync(acct[0], acct.Length > 1 ? acct[1] : null); await Api.Migrations.AddAliasAsync(new MigrationSchemas.MigrationRequest { UserId = user?.Id }); Status = await Api.Migrations.GetMigrationStatusAsync(); } catch (ApiException e) { await Global.NoticeDialog?.Display(e.Response.Message ?? Loc["An unknown error occurred while adding an alias"], NoticeDialog.NoticeType.Error)!; AliasButton.State = StateButton.StateEnum.Failed; return; } Alias = ""; AliasButton.State = StateButton.StateEnum.Success; } private async Task DeleteAlias(string uri) { try { await Api.Migrations.RemoveAliasAsync(new MigrationSchemas.MigrationRequest { UserUri = uri }); } catch (ApiException e) { await Global.NoticeDialog?.Display(e.Response.Message ?? Loc["An unknown error occurred while removing an alias"], NoticeDialog.NoticeType.Error)!; } Status = await Api.Migrations.GetMigrationStatusAsync(); } private void ResetAliasButtonState() { if (AliasButton.State is StateButton.StateEnum.Failed or StateButton.StateEnum.Success) AliasButton.State = StateButton.StateEnum.Initial; } }