Newer
Older
final class SettingsDeleteViewModel {
@Dependency(\.keychain) var keychain: KeychainManager
@Dependency(\.app.dbManager) var dbManager: DBManager
@Dependency(\.app.messenger) var messenger: Messenger
@Dependency(\.app.hudManager) var hudManager: HUDManager
@KeyObject(.username, defaultValue: nil) var username: String?
private var isCurrentlyDeleting = false
func didTapDelete() {
guard isCurrentlyDeleting == false else { return }
isCurrentlyDeleting = true
try keychain.destroy()
try dbManager.removeDB()
UserDefaults.resetStandardUserDefaults()
UserDefaults.standard.removePersistentDomain(forName: Bundle.main.bundleIdentifier!)
UserDefaults.standard.synchronize()
hudManager.show(.init(
title: Localized.Settings.Delete.Success.title,
content: Localized.Settings.Delete.Success.subtitle
))
} catch {
DispatchQueue.main.async { [weak self] in
self.hudManager.show(.init(error: error))
try messenger.ud.get()!.permanentDeleteAccount(
username: .init(type: .username, value: username!)
)