From dbef68c8f8da1d8084f3698f721adba201c31e06 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sun, 18 Dec 2022 22:12:00 +0800 Subject: [PATCH] Pretend to delete accounts to match animations --- .../Accounts/AccountsManagementView.swift | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/iOS/Settings/Views/Account and Extensions/Accounts/AccountsManagementView.swift b/iOS/Settings/Views/Account and Extensions/Accounts/AccountsManagementView.swift index 020cd53d6..c32c7cbcd 100644 --- a/iOS/Settings/Views/Account and Extensions/Accounts/AccountsManagementView.swift +++ b/iOS/Settings/Views/Account and Extensions/Accounts/AccountsManagementView.swift @@ -14,6 +14,7 @@ public final class AccountManagementViewModel: ObservableObject { @Published var sortedActiveAccounts = [Account]() @Published var sortedInactiveAccounts = [Account]() + @Published var accountsForDeletion = [Account]() @Published var showAccountDeletionAlert: Bool = false @Published var showAddAccountSheet: Bool = false public var accountToDelete: Account? = nil @@ -38,11 +39,26 @@ public final class AccountManagementViewModel: ObservableObject { } } + func temporarilyDeleteAccount(_ account: Account) { + if account.isActive { + sortedActiveAccounts.removeAll(where: { $0.accountID == account.accountID }) + } else { + sortedInactiveAccounts.removeAll(where: { $0.accountID == account.accountID }) + } + accountToDelete = account + showAccountDeletionAlert = true + } + + func restoreAccount(_ account: Account) { + accountToDelete = nil + self.refreshAccounts() + } + private func refreshAccounts() { sortedActiveAccounts = AccountManager.shared.sortedActiveAccounts sortedInactiveAccounts = AccountManager.shared.sortedAccounts.filter({ $0.isActive == false }) } - + } @@ -86,7 +102,7 @@ struct AccountsManagementView: View { } Button(role: .cancel) { - // + viewModel.restoreAccount(viewModel.accountToDelete!) } label: { Text("CANCEL_BUTTON_TITLE", tableName: "Buttons") } @@ -118,8 +134,7 @@ struct AccountsManagementView: View { .swipeActions(edge: .trailing, allowsFullSwipe: false) { if account != AccountManager.shared.defaultAccount { Button(role: .destructive) { - viewModel.accountToDelete = account - viewModel.showAccountDeletionAlert = true + viewModel.temporarilyDeleteAccount(account) } label: { Label { Text("REMOVE_ACCOUNT_BUTTON_TITLE", tableName: "Buttons")