Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public final class LoginCoordinator: AbstractCoordinator {
- // MARK: Delegate Properties
- private unowned let delegate: LoginCoordinatorDelegate
- // MARK: Initializers
- public init(delegate: LoginCoordinatorDelegate, navigationController: UINavigationController) {
- self.delegate = delegate
- self.navigationController = navigationController
- super.init()
- }
- // MARK: Stored Properties
- private let navigationController: UINavigationController
- private let loginService: LoginService = LoginService()
- // MARK: Instance Methods
- public override func start() {
- super.start()
- let vc: LoginVC = LoginVC(delegate: self)
- self.navigationController.pushViewController(
- vc,
- animated: true
- )
- }
- }
- // MARK: - LoginVCDelegate Protocol
- extension LoginCoordinator: LoginVCDelegate {
- public func login(with email: String, password: String) {
- self.loginService.getUser(with: email, password: password)
- .onSuccess { [weak self] (user: User) in
- DispatchQueue.main.async {
- self?.navigationController.popViewController(
- animated: true
- )
- }
- self?.delegate.storeUser(user, coordinator: self))
- }
- .onFailure { [weak self] (error: NetworkingError) in
- print(error)
- self?.presentErrorAlert()
- }
- }
- }
Add Comment
Please, Sign In to add comment