-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feat] Assignment4 #8
base: main
Are you sure you want to change the base?
Conversation
๋น์ค ์ญ์
- APIConstants, NetworkResult, LoginModel, UserService ํ์ผ ์ถ๊ฐ ๋ฐ LoginViewController์ ํต์ ์ฝ๋ ์ถ๊ฐ
- ๋ก๊ทธ์ธ, ํ์๊ฐ์ API ์ฐ๊ฒฐ - ๋ก๊ทธ์ธ ์ฑ๊ณต ๋ฐ ์คํจ ๋ณ ์๋ฆผ ๋ฉ์์ง ๋ฐ ๋์ ๋ณ๊ฒฝ - ํ์๊ฐ์ ์ฑ๊ณต ๋ฐ ์คํจ ๋ณ ์๋ฆผ ๋ฉ์์ง ๋์ ๋ณ๊ฒฝ
- ๊ฐ์ ์๋ฃ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฒ ํต์ ํจ์ ๋ด๋ถ์ - response code์ ๋ฐ๋ฅธ ํ๋ฉด์ ํ ์ฒ๋ฆฌ
- Get ํต์ ์ผ๋ก Picsum API ๋ฅผ ํตํด Json์ผ๋ก ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ๊น์ง ๊ตฌํํจ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
๊ณผ์ ์ ์ถํ์๋๋ผ ๋ฆ์ ์๊ฐ๊น์ง ๊ณ ์ํ์ จ์ต๋๋ค. !!!
์๋ฒ์ ์ฐ๊ฒฐ์ ํ๋ ๊ฒ์ ๊ดํด ์๊ฐ์ ๋ง์ด ํด๋ณด์ ๊ฒ ๋๊ปด์ ธ์ ๐
์ถ๊ฐ๋ก gitignore์ ์ฝ์ฝ์ํ์ด ์์ด์ ๊ด๋ จ ํ์ผ์ด ๋ค ์ฌ๋ผ์ค๋ ๊ฒ ๊ฐ์๋ฐ ์ถ๊ฐํ์๋ฉด ์ข์ ๊ฒ ๊ฐ์์ฉ ๐
PR ํฌ์ธํธ์ ์ ์ ์ฌํญ๋ ์ ๊ฐ ์๋ ๋ถ๋ถ์์ ์ฝ๋ฉํธ ๋จ๊ฒผ๋๋ฐ ํด๊ฒฐ์ด ๋ ์ง ๋ชจ๋ฅด๊ฒ ์ผ๋, ๊ณ์ ๊ณ ๋ฏผํด๋ณด๊ณ ์ถํ์ ๋ฆฌํฉํ ๋ง์ผ๋ก ๊ฐ์ ๋ ์ฝ๋๊ฐ ๋๋ฉด ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค~~~
์ด์ ๋น๊ทผ.. ํ๋ฌ ๊ฐ์์ฃ ... ๐ฉ๐ปโ๐พ๐ฅ
passwordTextField.isSecureTextEntry.toggle() | ||
passwordEyeButton.isSelected.toggle() | ||
let eyeImage = passwordEyeButton.isSelected ? "icn_password_shown" : "icn_password_hidden" | ||
passwordEyeButton.setImage(UIImage(named: eyeImage), for: .normal) | ||
passwordEyeButton.tintColor = .clear |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
passwordEyeButton.isSelected.toggle()
์ด ์ฝ๋ ๋ง๊ณ ๋ ๋ค ์คํ ๋ฆฌ๋ณด๋์์ ์ง์ ํ ์ ์๋ ๊ฑธ๋ก ์๋๋ฐ, ์ฝ๋๋ง๊ณ ์ค๋ณด๋ก ํด๋ณด์๋ ๊ฒ๋ ์ถ์ฒ๋๋ฆฝ๋๋น~~
guard let name = userNameTextField.text else { return } | ||
guard let email = userNameTextField.text else { return } | ||
guard let password = passwordTextField.text else { return } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
guard let ๊ตฌ๋ฌธ ์ข๋ค์ ๐
case .success(let data): | ||
guard let data = data as? LoginResponse else { return } | ||
|
||
var message:String | ||
// LoginResponse์ ์ํ์ ๋ฐ๋ฅธ ๋ฉ์์ง ๋ถ๊ธฐ์ฒ๋ฆฌ | ||
switch data.status { | ||
case 404: | ||
message = "์ผ์นํ๋ ์์ด๋๊ฐ ์์ต๋๋ค." | ||
self.isLoginSuccess = false | ||
case 409: | ||
message = "๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ์ง ์์ต๋๋ค." | ||
self.isLoginSuccess = false | ||
default: | ||
message = data.message | ||
self.isLoginSuccess = true | ||
guard let signInCompletedVC = UIStoryboard(name: "SignInCompleted", bundle: nil).instantiateViewController(withIdentifier: "SignInCompletedViewController") as? SignInCompletedViewController else {return} | ||
signInCompletedVC.userName = self.userNameTextField.text | ||
|
||
self.navigationController?.pushViewController(signInCompletedVC, animated: true) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
switch ๊ตฌ๋ฌธ์์ case .success ์ฝ๋ ์์ ๋ switch ๊ตฌ๋ฌธ์ผ๋ก request์๋ฌ ํ์ ์ ๋ฃ์ผ์ ๊ฑฐ๋ ์ด๋ค ์ด์ ์ด์ค๊น์...? PR ํฌ์ธํธ1์ ๊ดํ ๋ด์ฉ์ผ๊น์??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
success = ํต์ ๋์๋ ๋ผ๊ณ ์๊ฐํ๊ณ ๊ทธ๋ฅ requestErr๋ฅผ ๋ฐ๋ก ๊ตฌ๋ถ ์ํ๊ณ ๋ก๊ทธ์ธ ๋ฉ์์ง๋ง ๊ตฌ๋ถํ๋ ค๊ณ switch๊ตฌ๋ฌธ์ ๊ฐ์ด ๋ฃ์ด์คฌ์ต๋๋ค..๊ทผ๋ฐ ์ด๊ฒ๋ ๋ฐ๋ก request์๋ฌ๋ฅผ ๊ตฌ๋ถํด์ค์ผ๊ฒ ๋ค์ใ ใ ์ข์ ์ง์ ๊ฐ์ฌํฉ๋๋คใ ใ
// ์ฑ๊ณต ์์๋ ๋๊ฒจ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ decode(ํด๋ )ํ๋ ํจ์๋ฅผ ํธ์ถ | ||
// statusCode๊ฐ 200~400๋ ์ผ๋๋ ํต์ ์ ์ด์์๋๊ฒ์ด ์๋๋ผ ๋๋ค isValidLoginDataํจ์๋ฅผ ํธ์ถ | ||
case 200..<300: return isVaildLoginData(data: data) | ||
case 400..<500: return isVaildLoginData(data: data) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
isVaildLoginData
ํจ์๋ .success(decodedData as Any)
๋ฅผ ๋ฆฌํดํ๊ธฐ ๋๋ฌธ์,
์ฌ๊ธฐ ๋ถ๋ถ์ isInVaildLoginData
ํจ์๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด์ .requestErr(decodedData)
์ ๋ฆฌํดํ๋๋ก ํ๋๊ฒ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค..!
private func isInVaildSignUpData(data: Data) -> NetworkResult<Any> {
let decoder = JSONDecoder()
guard let decodedData = try? decoder.decode(SignUpResponse.self, from: data)
else { return .pathErr }
return.requestErr(decodedData)
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์ ๋ค๋ค ๋ง์ต๋๋ค ์ญ์ ์๋น์ ๋ฐฐ ๋ฐ๋ก ์ฐพ์ผ์ จ๋ค์ใ ใ ์ฌ์ค ์ฒ์์ .success๊ฐ ํต์ ์ด ๋๋ ์๋๋๋ผ๊ณ ์๊ฐํด์ success ๋์๋๋ ๊ทธ๋ฅ isValid ํจ์๋ฅผ ์คํ์์ผ์คฌ๋๋ฐ ๋ค์ ๋ณด๋๊น ์๋น๋ ๋ง์ํ์ ๊ฒ์ฒ๋ผ ํจ์๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด์ requestErr๋ฅผ ๊ตฌ๋ถํด์ผ๊ฒ ๋๋ผ๊ตฌ์,,, ๋งค๋ฒ ์น์ ํ ์ง์ ์ข์์ใ ใ ์๊ฐ๋ ๋ ๋ค๋ฅธ๊ฒ๊น์ง ๊ฐ์ด ๋ฆฌํฉํ ๋ง ํด๋ณด๊ฒ ์ต๋๋ค,,๐
๐ฑ ์์ ํ ๋ด์ฉ
๊ธฐ๋ณธ ๊ณผ์
๋์ ๊ณผ์ - 1
๋์ ๊ณผ์ - 2 ๊ฐ์ ธ์จ ์ด๋ฏธ์ง url์ ์ด์ฉํด ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ ํผ๋ ์ด๋ฏธ์ง์ ๋์์ฃผ๋๊ฑด๋ฐ ์๊ฐ์ด ์์ด ๊ตฌํํ์ง ๋ชปํ์ต๋๋ค..
์๊ฐ ๋ ๋ ์ถ๊ฐ์ ์ผ๋ก ๊ตฌํํด๋ณด๊ฒ ์ต๋๋คใ
๐ฑ PR Point
PR Point 1
๊ธฐ๋ณธ ๊ณผ์ ์ ์๋๊ฑฐ๋ ๋ก๊ทธ์ธ, ํ์๊ฐ์ ์ ์ฑ๊ณตํ์๋ ๋ฉ์์ง๋ง ์๋ฆผ์ฐฝ์ผ๋ก ๋์์ฃผ๋๊ฒ์ด์๋๋ฐ
์คํจํ์๋ ์๋ต์ status ์ฝ๋๋ก ๋ถ๊ธฐ์ฒ๋ฆฌํ๊ณ ๋ฉ์์ง๋ฅผ ๋ณ๊ฒฝํด ์ ์คํจ ํ๋์ง
( ex. ์ค๋ณต ์์ด๋(ํ์๊ฐ์ ), ๋น๋ฐ๋ฒํธ ํ๋ฆผ(๋ก๊ทธ์ธ))๋ฅผ ํ์ํด ์ฃผ์๊ณ
ํนํ ํ์๊ฐ์ ์์ ๋น๋ฐ๋ฒํธ๊น์ง ์ ๋ ฅ์๋ฃํ๊ณ ์์ด๋ ์ค๋ณต์ผ๋ก ์คํจํ์๋
์ค๋ณต ์๋ฆผ ๋ฉ์์ง์ ํจ๊ป ์์ด๋ ์ ๋ ฅํ์ด์ง๋ก ๋ค์ ๋์๊ฐ๊ฒ ํด์ ๊ณผ์ ๋ด์์ UX ๊ฒฝํ์ ๊ฐ์ ํ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค^^
๊ทธ๋ฌ๋ signUpPasswordViewController์์ ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ํ ๋
ํต์ ํจ์( signUp() ) ๋ฅผ ์คํํ๊ณ ํ๊ณ ๊ทธ ์์์ ์๋ต ์ฝ๋์ ๋ฐ๋ผ
์ฑ๊ณต์ ์ ๋ฌด๋ฅผ ํ๋จํ๋ Bool ํ์ ๋ณ์ isSignUpSuccess๋ก ๊ฐ์ ๋ณ๊ฒฝํด์ฃผ์ด
๊ทธ ๊ฐ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ํ๋ฉด ์ ํ์ ํ ์ง ๊ฒฐ์ ํ๋ ค๊ณ ํ๋๋ฐ
๋น๋๊ธฐ์ ์ผ๋ก signUp ํจ์๊ฐ ๋๋๊ธฐ๋ ์ ์ ( isSignUpSuccess๊ฐ ๋ฐ๋๊ธฐ๋ ์ ์)
๊ธฐ์กด ๊ฐ์ผ๋ก ํ๋ฉด์ ํ์ด ์ด๋ฃจ์ด์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํด์
๊ฒฐ๊ณผ์ ์ผ๋ก ์๋์ ๊ฐ์ด ์์ ์๋ต์ ๋ฐ๋ ํจ์ ์์ ๋ถ๊ธฐ์ฒ๋ฆฌ๋ก case์ ๋ฐ๋ผ ํ๋ฉด ์ ํ์ด ๋๋๋ก ํ๋๋ฐ ์ด๋ฐ์์ผ๋ก ๊ตฌํํ๋๊ฒ ์ข ์๋๊ฒ ๊ฐ์์ ํผ๋๋ฐฑ ๊ถ๊ธํฉ๋๋ค!ใ
๐ธ ์คํฌ๋ฆฐ์ท
๐ฎ ๊ด๋ จ ์ด์