Skip to content

Commit

Permalink
[Refactor] #32 - VM이 VC 직접참조하는 것 삭제
Browse files Browse the repository at this point in the history
  • Loading branch information
yurim830 committed Jan 3, 2025
1 parent 1cbbd9c commit 2184f9c
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ class LoginViewController: BaseViewController {
view = loginView
}

override func viewDidLoad() {
super.viewDidLoad()
bindViewModel()
}

override func setDelegate() {
loginView.usernameTextField.delegate = self
}
Expand All @@ -46,16 +51,32 @@ class LoginViewController: BaseViewController {
}
}

private func bindViewModel() {
loginViewModel.isLoginSuccess.bind { [weak self] isLoginSuccess in
guard let self = self,
let isLoginSuccess = isLoginSuccess else { return }
isLoginSuccess ? navigateToMainScreen() : EasyAlert.showAlert(title: "로그인 실패",
message: loginViewModel.loginErrorMessage,
vc: self)
}
}

private func conductLogin() {
guard let loginInfo: LoginInfo = loginView.returnInputs() else {
guard let loginInfo = loginView.returnInputs() else {
EasyAlert.showAlert(
title: "로그인 실패",
message: "username과 password를 정확히 입력하세요.",
vc: self)
return
}

loginViewModel.login(strongSelf: self, loginInfo: loginInfo)
loginViewModel.login(loginInfo)
}

private func navigateToMainScreen() {
let tabBarController = TabBarController()
tabBarController.modalPresentationStyle = .fullScreen
self.present(tabBarController, animated: true)
}

@objc func tappedAutoLoginButton() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,37 +12,33 @@ class LoginViewModel {
let userData = UserDefaultsManager.fetchUserData()
var usernameBinding: ObservablePattern<String> = ObservablePattern(nil)
var passwordBinding: ObservablePattern<String> = ObservablePattern(nil)
var isLoginSuccess: ObservablePattern<Bool> = ObservablePattern(nil)
var loginErrorMessage: String? = nil


// MARK: - Methods

func login(strongSelf: UIViewController, loginInfo: LoginInfo) {
func login(_ loginInfo: LoginInfo) {
LoginService.shared.login(
username: loginInfo.username,
password: loginInfo.password) { [weak self] result in
guard let self = self else { return }
handleLoginResult(strongSelf, result: result, loginInfo: loginInfo)
handleLoginResult(result: result, loginInfo: loginInfo)
}
}

private func handleLoginResult(_ strongSelf: UIViewController,
result: Result<String, NetworkError>,
private func handleLoginResult(result: Result<String, NetworkError>,
loginInfo: LoginInfo) {
switch result {
case .success(let token):
UserDefaultsManager
.registerLoginData(loginInfo: loginInfo, token: token)
navigateToMainScreen(strongSelf)
isLoginSuccess.value = true

case .failure(let error):
let message = error.errorMessage
EasyAlert.showAlert(title: "로그인 실패", message: message, vc: strongSelf)
isLoginSuccess.value = false
}
}

private func navigateToMainScreen(_ strongSelf: UIViewController) {
let tabBarController = TabBarController()
tabBarController.modalPresentationStyle = .fullScreen
strongSelf.present(tabBarController, animated: true)
}
}

0 comments on commit 2184f9c

Please sign in to comment.