diff --git a/SOPTving/SOPTving/Presentation/AuthScene/ViewModel/SignInViewModel.swift b/SOPTving/SOPTving/Presentation/AuthScene/ViewModel/SignInViewModel.swift index 846bffa..3396656 100644 --- a/SOPTving/SOPTving/Presentation/AuthScene/ViewModel/SignInViewModel.swift +++ b/SOPTving/SOPTving/Presentation/AuthScene/ViewModel/SignInViewModel.swift @@ -6,87 +6,3 @@ // import Foundation - -enum AuthError: Error { - case invalidEmail - case invlidPassword - case invalidUser - - var message: String { - switch self { - - case .invalidEmail: - return "이메일형식을 잘못 입력하셨습니다." - case .invlidPassword: - return "비밀번호를 8자 이상 입력해주세요." - case .invalidUser: - return "존재하지 않는 회원입니다." - } - } -} - -protocol SignInViewModelInput { - func emailTextFieldDidChangeEvent(_ text: String) - func passwordTextFieldDidChangeEvent(_ text: String) - func signInButtonDidTapEvent() -} - -protocol SignInViewModelOutput { - var ableToSignIn: Observable { get } - var isSuccessLogin: Observable> { get } -} - -protocol SignInViewModel: SignInViewModelInput, SignInViewModelOutput { } - -final class DefaultSignInViewModel: SignInViewModel { - - private var email: String - private var password: String - - //MARK: - Output - - var ableToSignIn: Observable = Observable(false) - var isSuccessLogin: Observable> = Observable(.failure(.invalidEmail)) - - //MARK: - Init - - init(email: String, password: String) { - self.email = email - self.password = password - } - -} - -extension DefaultSignInViewModel { - - func emailTextFieldDidChangeEvent(_ text: String) { - self.email = text - self.ableToSignIn.value = email.hasText && password.hasText - } - - func passwordTextFieldDidChangeEvent(_ text: String) { - self.password = text - self.ableToSignIn.value = email.hasText && password.hasText - } - - func signInButtonDidTapEvent() { - let isValidEmail = email.isEmailFormat - let isValidPassword = password.isMoreThan(8) - let isExistedUser = true // 나중에 서버 통신 후 해당 값 isExistedUser에 대입. 임시적으로 true - - guard isValidEmail else { - isSuccessLogin.value = .failure(.invalidEmail) - return - } - guard isValidPassword else { - isSuccessLogin.value = .failure(.invlidPassword) - return - } - guard isExistedUser else { - isSuccessLogin.value = .failure(.invalidUser) - return - } - - isSuccessLogin.value = .success(true) - } -} diff --git a/SOPTving/SOPTving/Utility/DesignPattern/Observable.swift b/SOPTving/SOPTving/Utility/DesignPattern/Observable.swift index 3df3c52..33bee14 100644 --- a/SOPTving/SOPTving/Utility/DesignPattern/Observable.swift +++ b/SOPTving/SOPTving/Utility/DesignPattern/Observable.swift @@ -6,37 +6,3 @@ // import Foundation - -final class Observable { - - struct Observer { - weak var observer: AnyObject? - let block: (T) -> Void - } - - private var observers = [Observer]() - - var value: T { - didSet { notifyObservers() } - } - - init(_ value: T) { - self.value = value - } - - func observe(on observer: AnyObject, observerBlock: @escaping (T) -> Void) { - observers.append(Observer(observer: observer, block: observerBlock)) - observerBlock(self.value) - } - - func remove(observer: AnyObject) { - observers = observers.filter { $0.observer !== observer } - } - - private func notifyObservers() { - for observer in observers { - observer.block(self.value) - } - } -} - diff --git a/SOPTving/SOPTving/Utility/Extension/String+.swift b/SOPTving/SOPTving/Utility/Extension/String+.swift index 1555c76..d510d3b 100644 --- a/SOPTving/SOPTving/Utility/Extension/String+.swift +++ b/SOPTving/SOPTving/Utility/Extension/String+.swift @@ -6,19 +6,3 @@ // import Foundation - -extension String { - - var isEmailFormat: Bool { - let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}" - return NSPredicate(format: "SELF MATCHES %@", emailRegex).evaluate(with: self) - } - - var hasText: Bool { - return !isEmpty - } - - func isMoreThan(_ length: Int) -> Bool { - return self.count > length - } -}