Skip to content

Commit

Permalink
Extract pin manager to App.
Browse files Browse the repository at this point in the history
  • Loading branch information
mNizhurin committed Oct 11, 2018
1 parent 5fc84d2 commit df158be
Show file tree
Hide file tree
Showing 10 changed files with 23 additions and 20 deletions.
4 changes: 3 additions & 1 deletion Wallet/Wallet/Core/Managers/App.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ class App {
let localStorage: ILocalStorage
let wordsManager: WordsManager

let pinManager: PinManager
let lockRouter: LockRouter
let lockManager: LockManager
let blurManager: BlurManager
Expand All @@ -16,8 +17,9 @@ class App {
localStorage = UserDefaultsStorage()
wordsManager = WordsManager(localStorage: localStorage)

pinManager = PinManager()
lockRouter = LockRouter()
lockManager = LockManager(localStorage: localStorage, wordsManager: wordsManager, pinManager: PinManager.shared, lockRouter: lockRouter)
lockManager = LockManager(localStorage: localStorage, wordsManager: wordsManager, pinManager: pinManager, lockRouter: lockRouter)
blurManager = BlurManager(lockManager: lockManager)

LocalizationHelper.instance.update(language: localStorage.currentLanguage ?? LocalizationHelper.defaultLanguage)
Expand Down
1 change: 0 additions & 1 deletion Wallet/Wallet/Core/Managers/PinManager.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import Foundation

class PinManager {
static let shared = PinManager()
private let pinKey = "pin_keychain_key"

var isPinned: Bool {
Expand Down
16 changes: 9 additions & 7 deletions Wallet/Wallet/Modules/Backup/BackupInteractor.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,18 @@ class BackupInteractor {

weak var delegate: IBackupInteractorDelegate?

private let walletManager: WordsManager
private let wordsManager: WordsManager
private let pinManager: PinManager
private var indexesProvider: IRandomProvider

init(walletManager: WordsManager, indexesProvider: IRandomProvider) {
self.walletManager = walletManager
init(wordsManager: WordsManager, pinManager: PinManager, indexesProvider: IRandomProvider) {
self.wordsManager = wordsManager
self.pinManager = pinManager
self.indexesProvider = indexesProvider
}

private func fetchWords() {
if let words = walletManager.words {
if let words = wordsManager.words {
delegate?.didFetch(words: words)
}
}
Expand All @@ -28,7 +30,7 @@ extension BackupInteractor: IBackupInteractor {
}

func validate(confirmationWords: [Int: String]) {
guard let words = walletManager.words else {
guard let words = wordsManager.words else {
delegate?.didValidateFailure()
return
}
Expand All @@ -39,12 +41,12 @@ extension BackupInteractor: IBackupInteractor {
return
}
}
walletManager.isBackedUp = true
wordsManager.isBackedUp = true
delegate?.didValidateSuccess()
}

func lockIfRequired() {
if PinManager.shared.isPinned {
if pinManager.isPinned {
delegate?.showUnlock()
} else {
fetchWords()
Expand Down
2 changes: 1 addition & 1 deletion Wallet/Wallet/Modules/Backup/BackupRouter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ extension BackupRouter {

static func module(dismissMode: BackupPresenter.DismissMode) -> UIViewController {
let router = BackupRouter()
let interactor = BackupInteractor(walletManager: App.shared.wordsManager, indexesProvider: Factory.instance.randomProvider)
let interactor = BackupInteractor(wordsManager: App.shared.wordsManager, pinManager: App.shared.pinManager, indexesProvider: Factory.instance.randomProvider)
let presenter = BackupPresenter(interactor: interactor, router: router, dismissMode: dismissMode)
let navigationController = BackupNavigationController(viewDelegate: presenter)

Expand Down
2 changes: 1 addition & 1 deletion Wallet/Wallet/Modules/Launch/LaunchRouter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class LaunchRouter {

static func presenter(window: UIWindow?) -> ILaunchPresenter {
let router = LaunchRouter()
let interactor = LaunchInteractor(wordsManager: App.shared.wordsManager, lockManager: App.shared.lockManager, pinManager: PinManager.shared)
let interactor = LaunchInteractor(wordsManager: App.shared.wordsManager, lockManager: App.shared.lockManager, pinManager: App.shared.pinManager)
let presenter = LaunchPresenter(interactor: interactor, router: router)

interactor.delegate = presenter
Expand Down
4 changes: 2 additions & 2 deletions Wallet/Wallet/Modules/Pin/Edit/EditPinRouter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ extension EditPinRouter {

static func module(from presentingController: UIViewController?) {
let router = EditPinRouter()
let interactor = PinInteractor(pinManager: PinManager.shared)
let interactor = PinInteractor(pinManager: App.shared.pinManager)
let presenter = EditPinPresenter(interactor: interactor, router: router)
let controller = PinViewController(delegate: presenter)

interactor.delegate = presenter
presenter.view = controller
router.viewController = controller

presentingController?.present(WalletNavigationController(rootViewController: controller), animated: true)
presentingController?.present(WalletNavigationController(rootViewController: controller), animated: true)
}

}
2 changes: 1 addition & 1 deletion Wallet/Wallet/Modules/Pin/Set/SetPinRouter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ extension SetPinRouter {

static func module() -> UIViewController {
let router = SetPinRouter()
let interactor = PinInteractor(pinManager: PinManager.shared)
let interactor = PinInteractor(pinManager: App.shared.pinManager)
let presenter = SetPinPresenter(interactor: interactor, router: router)
let controller = PinViewController(delegate: presenter)

Expand Down
2 changes: 1 addition & 1 deletion Wallet/Wallet/Modules/Pin/Unlock/UnlockPinRouter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ extension UnlockPinRouter {
let biometricManager = BiometricManager()

let router = UnlockPinRouter()
let interactor = UnlockPinInteractor(pinManager: PinManager.shared, biometricManager: biometricManager, localStorage: App.shared.localStorage)
let interactor = UnlockPinInteractor(pinManager: App.shared.pinManager, biometricManager: biometricManager, localStorage: App.shared.localStorage)
let presenter = UnlockPinPresenter(interactor: interactor, router: router, configuration: .init(cancellable: cancelable))
let controller = PinViewController(delegate: presenter)

Expand Down
4 changes: 2 additions & 2 deletions Wallet/Wallet/Modules/Settings/SettingsViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ class SettingsViewController: UIViewController, SectionsDataSource {
cell.bind(titleIcon: UIImage(named: "Bug Icon"), title: "Drop Keychain", showDisclosure: false)
}, action: { _ in
App.shared.wordsManager.isBackedUp = false
try? PinManager.shared.store(pin: nil)
try? App.shared.pinManager.store(pin: nil)
}))
sections.append(Section(id: "debug_section", headerState: .marginColor(height: 50, color: .clear), footerState: .marginColor(height: 20, color: .clear), rows: debugRows))

Expand All @@ -157,7 +157,7 @@ class SettingsViewController: UIViewController, SectionsDataSource {
App.shared.wordsManager.isBackedUp = false
App.shared.wordsManager.removeWords()
App.shared.adapterManager.clear()
try? PinManager.shared.store(pin: nil)
try? App.shared.pinManager.store(pin: nil)

guard let window = UIApplication.shared.keyWindow else {
return
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,11 @@ class SettingsSecurityController: UIViewController, SectionsDataSource {
}
}

let setOrChangePinTitle = PinManager.shared.isPinned ? "settings_security.change_pin".localized : "settings_security.set_pin".localized
pinTouchFaceRows.append(Row<SettingsCell>(id: "set_pin", hash: "pinned_\(PinManager.shared.isPinned)", height: SettingsTheme.securityCellHeight, bind: { cell, _ in
let setOrChangePinTitle = App.shared.pinManager.isPinned ? "settings_security.change_pin".localized : "settings_security.set_pin".localized
pinTouchFaceRows.append(Row<SettingsCell>(id: "set_pin", hash: "pinned_\(App.shared.pinManager.isPinned)", height: SettingsTheme.securityCellHeight, bind: { cell, _ in
cell.bind(titleIcon: nil, title: setOrChangePinTitle, showDisclosure: true, last: true)
}, action: { [weak self] _ in
if PinManager.shared.isPinned {
if App.shared.pinManager.isPinned {
EditPinRouter.module(from: self)
}
}))
Expand Down

0 comments on commit df158be

Please sign in to comment.