From 6e2b5525a92b7273219c10a181992f973650a99c Mon Sep 17 00:00:00 2001 From: pancakes Date: Mon, 24 Mar 2025 00:41:57 +1000 Subject: [PATCH] [frontend/pages] Add migrate to new account section to migrations page --- .../MigrationControllerModel.cs | 3 ++ .../Pages/Settings/Migration.razor | 54 +++++++++++++++++-- 2 files changed, 52 insertions(+), 5 deletions(-) diff --git a/Iceshrimp.Frontend/Core/ControllerModels/MigrationControllerModel.cs b/Iceshrimp.Frontend/Core/ControllerModels/MigrationControllerModel.cs index 64c3bbc6..754ceb45 100644 --- a/Iceshrimp.Frontend/Core/ControllerModels/MigrationControllerModel.cs +++ b/Iceshrimp.Frontend/Core/ControllerModels/MigrationControllerModel.cs @@ -13,4 +13,7 @@ internal class MigrationControllerModel(ApiClient api) public Task RemoveAliasAsync(MigrationSchemas.MigrationRequest request) => api.CallAsync(HttpMethod.Delete, "/migration/aliases", data: request); + + public Task MigrateAsync(MigrationSchemas.MigrationRequest request) => + api.CallAsync(HttpMethod.Post, "/migration/move", data: request); } diff --git a/Iceshrimp.Frontend/Pages/Settings/Migration.razor b/Iceshrimp.Frontend/Pages/Settings/Migration.razor index f1bb96d9..7b63475b 100644 --- a/Iceshrimp.Frontend/Pages/Settings/Migration.razor +++ b/Iceshrimp.Frontend/Pages/Settings/Migration.razor @@ -26,6 +26,25 @@ @if (State is State.Loaded) {
+
+

@Loc["Move current account to new account"]

+ + + + + @Loc["Migrate"] + + + + + + + + + + + +

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

@@ -40,13 +59,13 @@ }
- + - + @@ -63,7 +82,9 @@ @code { private MigrationSchemas.MigrationStatusResponse Status { get; set; } = null!; private State State { get; set; } = State.Loading; + private StateButton MoveButton { get; set; } = null!; private StateButton AliasButton { get; set; } = null!; + private string MoveTo { get; set; } = ""; private string Alias { get; set; } = ""; protected override async Task OnInitializedAsync() @@ -72,6 +93,29 @@ State = State.Loaded; } + private async Task Migrate() + { + if (string.IsNullOrWhiteSpace(MoveTo)) return; + + var acct = MoveTo.Trim().TrimStart('@').Split('@'); + if (string.IsNullOrWhiteSpace(acct[0])) return; + + MoveButton.State = StateButton.StateEnum.Loading; + + try + { + var user = await Api.Users.LookupUserAsync(acct[0], acct.Length > 1 ? acct[1] : null); + await Api.Migrations.MigrateAsync(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 migrating"], NoticeDialog.NoticeType.Error)!; + MoveButton.State = StateButton.StateEnum.Failed; + } + } + private async Task AddAlias() { if (string.IsNullOrWhiteSpace(Alias)) return; @@ -113,9 +157,9 @@ Status = await Api.Migrations.GetMigrationStatusAsync(); } - private void ResetAliasButtonState() + private void ResetButtonState(StateButton button) { - if (AliasButton.State is StateButton.StateEnum.Failed or StateButton.StateEnum.Success) - AliasButton.State = StateButton.StateEnum.Initial; + if (button.State is StateButton.StateEnum.Failed or StateButton.StateEnum.Success) + button.State = StateButton.StateEnum.Initial; } } \ No newline at end of file