-
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: 프로필 VIP 로직 구현, 네트워크 연결 #216
Conversation
…yover into iOS/feat#209
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.
고생하셨습니다. 딱히 바꿔야할 건 없구 궁금한 점들만 달아놨습니다.
var profileId: Int? { get set } | ||
|
||
var playbackStartIndex: Int? { get set } | ||
var posts: [Post] { get set } |
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.
✅
let posts = await fetchPosts() | ||
canFetchMorePosts = !posts.isEmpty | ||
fetchPostsPage += 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.
이건 어떤 동작인가요? fetchPostPage?
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.
게시글 가져오는 서버 API가 달라져서 이제 페이징 처리를 하기 위해서 입니다.
몇번째 페이지를 받아올 지 서버 인자로 넘겨주어야 해서, 받아오고 나면 다음 페이지 요청을 위해 값을 1 증가시킵니다.
만약 받아온 데이터가 빈 배열이면 더 이상 가져올 데이터가 없는 것으로 판단하고 canFetchMorePosts 값이 false로 설정되어서 요청을 더이상 못하게 됩니다.
return collectionView | ||
}() | ||
|
||
private var videoDatasource: UICollectionViewDiffableDataSource<Section, AnyHashable>? | ||
private var collectionViewDatasource: UICollectionViewDiffableDataSource<Section, AnyHashable>? |
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.
얘는 쓰는 모델이 따로 없나요? 본인 프로필이랑 타인 프로필이랑 달라서 그런가
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.
이 부분은 유경님께서 짜신 부분인데, AnyHashable로 하신 이유가 프로필을 표시하는 부분과 아래쪽 영상 썸네일 표시하는 부분의 셀 타입이 다른데, 두 가지 타입의 셀을 한 컬렉션 뷰에서 사용하기 위함으로 파악했습니다.
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.
엇 인환님께서 말씀하신 의도가 맞습니다 !!
let height = scrollView.bounds.height | ||
|
||
if scrollOffset > contentHeight - height { | ||
fetchPosts() |
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.
이 부분 메소드 감싼 이유가 있을까요?
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.
처음 뷰컨이 로드되었을 때, 프로필 + 게시글 1페이지를 불러오는 메서드, 스크롤 아래로 내려서 다음 게시글 페이지를 불러오는 메서드 두가지로 유스케이스가 정의되는데, 두 메서드에서 게시글을 가져오는 로직이 겹치기 때문에 메서드를 분리했습니다.
@@ -9,14 +9,16 @@ | |||
import Foundation | |||
|
|||
protocol UserEndPointFactory { | |||
func makeUserNameIsDuplicateEndPoint(of userName: String) -> EndPoint<Response<CheckUserNameDTO>> | |||
func makeUserNameIsNotDuplicateEndPoint(of userName: String) -> EndPoint<Response<CheckUserNameDTO>> |
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.
..valid의 부정의 부정의 부정의 부정의.. ㅎㅎ
case profile | ||
case posts |
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.
👍
// MARK: - Use Case | ||
|
||
private func fetchProfile() { | ||
interactor?.fetchProfile(with: Models.FetchProfile.Request()) | ||
} | ||
|
||
private func fetchPosts() { | ||
interactor?.fetchMorePosts(with: Models.FetchMorePosts.Request()) | ||
} |
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.
오 interactor 호출하는 함수를 따로 다 분리하셨네요 ?? 이것도 컨벤션 맞추면 좋을 것 같아요!
이렇게 하는게 더 깔끔해보이는데 함수 한개만 호출을 하는 메소드를 추가적으로 만들어야 할까 싶기도하네요 !
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.
viewDidLoad 같은 Life Cycle 메서드에 쌩으로 실행문이 들어가는게 싫어서요 ㅎㅎ 아마 저희 코딩컨벤션?에 했었나
그 이외에 setUI 같은 곳에서는 가차없이 넣었습니다.
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.
수고하셨습니당 😎
…yover into iOS/feat#209
🧑🚀 PR 요약
📌 변경 사항
프로필 VIP 로직을 구현했습니다. 네트워크 연결은 우선 MockUserWorker로 처리했습니다.
프로필 뷰에서 게시글 페이징 처리를 구현했습니다. 각 페이지 요청에 따른 더미 데이터도 추가해두었습니다.
프로필 편집 쪽으로 데이터 넘김 처리를 구현하느라 프로필 편집 뷰쪽 코드를 건드린 부분이 있습니다.
📸 ScreenShot
Linked Issue
close #209