From aac5f00d3b9995ceddc7d4400380e180c4527bab Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 12 Apr 2022 16:48:47 -0500 Subject: [PATCH] Add logout logic --- .../Coordinators/AccountCoordinator.swift | 2 +- .../Account Screen/AccountViewController.swift | 17 +++++++++++++++++ .../Account Screen/AccountViewModel.swift | 16 ++++++++++++++++ .../Profile/Login Screen/LoginViewModel.swift | 1 - .../Settings/Plus Screen/PlusViewModel.swift | 2 -- Shared/Services/AccountService.swift | 4 ++++ 6 files changed, 38 insertions(+), 4 deletions(-) diff --git a/BookPlayer/Coordinators/AccountCoordinator.swift b/BookPlayer/Coordinators/AccountCoordinator.swift index bc7f95c05..7c705551a 100644 --- a/BookPlayer/Coordinators/AccountCoordinator.swift +++ b/BookPlayer/Coordinators/AccountCoordinator.swift @@ -28,7 +28,7 @@ class AccountCoordinator: Coordinator { override func start() { let vc = AccountViewController.instantiate(from: .Profile) - let viewModel = AccountViewModel() + let viewModel = AccountViewModel(accountService: self.accountService) viewModel.coordinator = self vc.viewModel = viewModel vc.navigationItem.largeTitleDisplayMode = .never diff --git a/BookPlayer/Profile/Account Screen/AccountViewController.swift b/BookPlayer/Profile/Account Screen/AccountViewController.swift index a7dd5a753..937c75711 100644 --- a/BookPlayer/Profile/Account Screen/AccountViewController.swift +++ b/BookPlayer/Profile/Account Screen/AccountViewController.swift @@ -23,6 +23,10 @@ class AccountViewController: BaseTableViewController { + let accountService: AccountServiceProtocol + + init(accountService: AccountServiceProtocol) { + self.accountService = accountService + } + func showCompleteAccount() { self.coordinator.showCompleteAccount() } + + func handleLogout() { + self.accountService.logout() + self.dismiss() + } + + func handleDelete() { + // TODO: handle delete account + } } diff --git a/BookPlayer/Profile/Login Screen/LoginViewModel.swift b/BookPlayer/Profile/Login Screen/LoginViewModel.swift index f8451b513..b85397f6e 100644 --- a/BookPlayer/Profile/Login Screen/LoginViewModel.swift +++ b/BookPlayer/Profile/Login Screen/LoginViewModel.swift @@ -34,7 +34,6 @@ class LoginViewModel: BaseViewModel { Purchases.shared.logIn(appleIDCredential.user) { _, _, _ in } // TODO: network call to create the user in backend - NotificationCenter.default.post(name: .accountUpdate, object: self) self.coordinator.showCompleteAccount() default: diff --git a/BookPlayer/Settings/Plus Screen/PlusViewModel.swift b/BookPlayer/Settings/Plus Screen/PlusViewModel.swift index 2931fa91e..826522f74 100644 --- a/BookPlayer/Settings/Plus Screen/PlusViewModel.swift +++ b/BookPlayer/Settings/Plus Screen/PlusViewModel.swift @@ -48,7 +48,5 @@ final class PlusViewModel { hasSubscription: nil, accessToken: nil ) - - NotificationCenter.default.post(name: .accountUpdate, object: self) } } diff --git a/Shared/Services/AccountService.swift b/Shared/Services/AccountService.swift index 80bee31c7..2dad6d597 100644 --- a/Shared/Services/AccountService.swift +++ b/Shared/Services/AccountService.swift @@ -94,6 +94,8 @@ public final class AccountService: AccountServiceProtocol { } self.dataManager.saveContext() + + NotificationCenter.default.post(name: .accountUpdate, object: self) } public func logout() { @@ -105,6 +107,8 @@ public final class AccountService: AccountServiceProtocol { account.accessToken = "" self.dataManager.saveContext() + + NotificationCenter.default.post(name: .accountUpdate, object: self) } public func deleteAccount() {