This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension LoginModule: AppModule { | |
func assemble() -> UIViewController? { | |
presenter.view = view | |
interactor.presenter = presenter | |
view.interactor = interactor | |
view.router = router | |
return view as? UIViewController |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func presentCredentials(response: Login.LoadCredentials.Response) { | |
let viewModel = Login.LoadCredentials.ViewModel(rememberMeIsOn: response.rememberUsername, | |
usernameText: response.username) | |
view?.displayStoredCredentials(viewModel: viewModel) | |
} | |
func authenticationCompleted(response: Login.Authenticate.Response) { | |
guard response.error == nil else { | |
handleServiceError(response.error) | |
return |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func login(request: Login.Authenticate.Request) { | |
guard let username = request.username, let password = request.password else { | |
let response = Login.Authenticate.Response(error: .missingCredentials) | |
presenter.authenticationCompleted(response: response) | |
return | |
} | |
let requestModel = UserRequestModel(username: username, password: password) | |
loginService.login(user: requestModel) { [weak self] result in | |
DispatchQueue.main.async { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func loadCredentials(request: Login.LoadCredentials.Request) { | |
let rememberUsername = userDefaults.rememberUsername ?? true | |
let username = keychain.username | |
let response = Login.LoadCredentials.Response(rememberUsername: rememberUsername, username: username) | |
presenter.presentCredentials(response: response) | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
final class LoginInteractor: LoginInteractable { | |
var presenter: LoginPresenterProtocol | |
private let loginService: LoginService | |
private let usersService: StandardNetworkService | |
private let userDefaults: FootballGatherUserDefaults | |
private let keychain: FootbalGatherKeychain | |
init(presenter: LoginPresenterProtocol = LoginPresenter(), |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func loginCompleted(viewModel: Login.Authenticate.ViewModel) { | |
hideLoadingView() | |
if viewModel.isSuccessful { | |
router.showPlayerList() | |
} else { | |
handleError(title: viewModel.errorTitle!, message: viewModel.errorDescription!) | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension LoginViewController: LoginViewConfigurable { | |
func displayStoredCredentials(viewModel: Login.LoadCredentials.ViewModel) { | |
rememberMeSwitch.isOn = viewModel.rememberMeIsOn | |
usernameTextField.text = viewModel.usernameText | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
final class LoginViewController: UIViewController, LoginViewable { | |
// ... | |
@IBAction private func login(_ sender: Any) { | |
showLoadingView() | |
let request = Login.Authenticate.Request(username: usernameTextField.text, | |
password: passwordTextField.text, | |
storeCredentials: rememberMeSwitch.isOn) | |
interactor.login(request: request) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
final class LoginViewController: UIViewController, LoginViewable { | |
// MARK: - Properties | |
@IBOutlet private weak var usernameTextField: UITextField! | |
@IBOutlet private weak var passwordTextField: UITextField! | |
@IBOutlet private weak var rememberMeSwitch: UISwitch! | |
lazy var loadingView = LoadingView.initToView(view) | |
var interactor: LoginInteractorProtocol = LoginInteractor() | |
var router: LoginRouterProtocol = LoginRouter() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Build | Time (sec)* | MVP-C Time (sec)* | MVP Time (sec)* | MVVM Time (sec)* | MVC Time (sec)* | |
---|---|---|---|---|---|---|
Average Build Time (after clean Derived Data & Clean Build) | 10.43 | 10.08 +0.35 | 10.18 +0.25 | 9.65 +0.78 | 9.78 +0.65 | |
Average Build Time | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | |
Average Unit Test Execution Time (after clean Derived Data & Clean Build) | 19.03 | 18.45 +0.58 | 16.52 +2.51 | 17.88 +1.15 | 12.78 +6.25 |