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()
{