diff --git a/Iceshrimp.Frontend/Core/ControllerModels/MigrationControllerModel.cs b/Iceshrimp.Frontend/Core/ControllerModels/MigrationControllerModel.cs index 754ceb45..be6e8da6 100644 --- a/Iceshrimp.Frontend/Core/ControllerModels/MigrationControllerModel.cs +++ b/Iceshrimp.Frontend/Core/ControllerModels/MigrationControllerModel.cs @@ -16,4 +16,7 @@ internal class MigrationControllerModel(ApiClient api) public Task MigrateAsync(MigrationSchemas.MigrationRequest request) => api.CallAsync(HttpMethod.Post, "/migration/move", data: request); + + public Task UndoAsync() => + api.CallAsync(HttpMethod.Delete, "/migration/move"); } diff --git a/Iceshrimp.Frontend/Pages/Settings/Migration.razor b/Iceshrimp.Frontend/Pages/Settings/Migration.razor index 241b7a0f..1c5202ec 100644 --- a/Iceshrimp.Frontend/Pages/Settings/Migration.razor +++ b/Iceshrimp.Frontend/Pages/Settings/Migration.razor @@ -32,6 +32,23 @@ @Loc["This account has been migrated to another account."] @Loc["Go to account"] + + @Loc["Undoing a migration does not move your followers back to this account. To move your followers back you will need to migrate back to this account manually."] + + + + @Loc["Undo migration"] + + + + + + + + + + + } else { @@ -101,6 +118,7 @@ @code { private MigrationSchemas.MigrationStatusResponse Status { get; set; } = null!; private State State { get; set; } = State.Loading; + private StateButton UndoButton { get; set; } = null!; private StateButton MoveButton { get; set; } = null!; private StateButton AliasButton { get; set; } = null!; private string MoveTo { get; set; } = ""; @@ -134,6 +152,23 @@ MoveButton.State = StateButton.StateEnum.Failed; } } + + private async Task UndoMigrate() + { + UndoButton.State = StateButton.StateEnum.Loading; + + try + { + await Api.Migrations.UndoAsync(); + + 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() {