[REFACTOR] Auth관련 VC들 MVVM(Combine)-C으로 변경 (#164) #165
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
[#164] REFACTOR : Auth관련 VC들 MVVM(Combine)-C으로 변경 (#164)
🌱 작업한 내용
1. 페어코딩으로 Auth관련 뷰들 리팩터링 완료(2023.11.14~2023.11.16)
라이온하트 MVVM 원칙
1. ViewController의 Input과 Output의 Failure타입은 모두 Never여야한다.
(ViewController에서의 stream은 성공이든 에러든 어떤 형태의 completion도 떠서는 안된다. completion을 받게 되면 stream이 끊어지기 때문)
2. ViewController에서 ViewModel은 init에서는 some으로 받는다
3. Factory에서의 VM과 VC는 Protocol타입으로 반환한다
4. delegate를 combine으로 대체합니다
5. VM에서 Coordinator관련 stream을 따로만들어서 flow stream을 관리합니다
🔥이유🔥
이렇게 결정한 이유는 특정 네트워크 결과에따라 main thread에서 실행되어야할 UI관련 코드가 background thread에서 동작하게 되어 문제가 발생할수있기에 매번 네트워킹 코드 내부에서 navigation호출을
DispatchQueue.main.asnyc{}
를 해줬어야했습니다. 하지만 navigationSubject자체를 main thread에서 receive하게되면 navgation관련 flow는 main에서 실행됨을 보장받을수있게됩니다.6. errorMessage를 보내는 Publisher는 Merge Operator를 활용해서 VC가 하나의 스트림만 바라보도록한다.
📮 관련 이슈