-
Notifications
You must be signed in to change notification settings - Fork 1
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
[Network] #155 - Login View 로직 수정, Refresh Token 로직추가 #156
Conversation
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.
훨씬 깔끔해졌구려 고생 많았소 최고입니다 서울우유 아기님
} else { | ||
print(result) | ||
print("🚨 RESPONSE IS NIL 🚨") |
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.
LGTM
@@ -11,6 +11,27 @@ import UIKit | |||
final class LoginViewModel { } | |||
|
|||
extension LoginViewModel { | |||
func getUniversity() { |
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.
p3
깔끔하오 소녀 굳굳
func getUniversity() { | ||
// 사용자의 대학을 조회한다. | ||
UserDefaults.standard.removeUniversity() |
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.
p3
온보딩에서 한 번 리셋 시키는건가유??
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.
엇 이걸 논의 했어야했는데...!
access token 재발급 문제 때문에 splash 단계에서 api를 호출해서 access 토큰 상태를 한번 확인하는 로직이 있으면 좋겠다고 생각했습니다.
마침... university가 user defaults에 저정하는 것으로 변경되었기 때문에 + 혹시 오류로 꼬여서 user defaults에 대학 정보가 남아있을 수 있음으로 탈퇴, 로그아웃을 고려해 splash 단계에서 초기화 할 수 있다면 좋겠다고 생각했고...
-> 기존에 저장된 정보를 초기화하고 university api를 호출하며 그와 동시에 access token을 검사하는 것으로 로직을 짰습니다.
name: response.data.name, | ||
longitude: response.data.longitude, | ||
latitude: response.data.latitude) | ||
UserDefaults.standard.saveUniversity(university) |
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.
p3
이 동무 애정하오
viewModel.postZipBatchDelete(requestBody: request) { | ||
self.setIsEditMode() | ||
self.dismiss(animated: false) { | ||
self.viewModel.zipList = [] | ||
self.viewModel.getZipList() | ||
} |
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.
p3
이슈 해결한 소녀 조아요
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.
고생하셨사옵나이다 아씨
onSuccess?(res) | ||
} else if T.self == Void.self { | ||
onSuccessVoid?() | ||
} else { |
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.
Void.self라는 건 한번도 작성해본 적 없는데 이럴 때 쓰이는군요
self.dismiss(animated: false) { | ||
self.viewModel.zipList = [] | ||
self.viewModel.getZipList() | ||
} |
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.
zipList를 비웠다가 다시 가져오는 로직인가요>?.?
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.
네 맞습니다!
현재 플로우가 같은 페이지 내에서
- 수정 모드로 변경 + 삭제할 족보를 선택함
- 삭제 버튼을 누르면 팝업으로 뜸
- 팝업을 닫으면 삭제됨...
- 팝업을 닫음과 동시에 선택한 족보를 삭제된 리스트를 불러옴(zip list api를 한번 더 호출함)
인데, api 통신하는 동안 삭제 이전의 데이터가 떠서 그냥 아예 한번 배열을 초기화하고 다시 불러오는 방식으로 설정했습니다
🔥 Pull requests
👷 작업한 내용
Login -> Onboarding -> Univ Select 으로 로직 변경했습니다. (나의 실수, 정말 미안)
HankkiList View Model에 Network Result 리펙토링이 안되어서 적용했습니다.
status code 204 대응
success 중 status code가 204로 오는 경우 response가 nil로 와서 decode 에러가 발생합니다. 해당 이슈 대응 로직을 작성했습니다. (후술)
401 에러(엑세스 토큰 만료)처리
401 에러 발생시 postReissue를 통해 엑세스 토큰을 재발급합니다.
이때 리프레시 토큰도 만료되었으면 application의 유저 정보를 지우고, 다시 로그인을 진행합니다.
🚨 참고 사항
204의 경우 서버에서 별도의 data를 보내지 않습니다. Void값이 오는데, emptyDTO를 쓰는 경우 타입이 같지 않아 디코딩 오류가 나게 됩니다.
NetworkResult로 선언 할 경우 response의 optional을 푸는 과정에서 예외처리 과정으로 빠지게 됩니다. 그래서, response 값이 nil이어도 호출할 수 있는
onSuccessVoid
클로저를 추가했습니다.위와 같은 방식으로 결과가 204인경우 실행할 로직을 작성해주시면됩니다.
✅ Check List
📟 관련 이슈