Conversation
| private func fetchThumbnailImageData(of posts: [PostDTO]) async -> [Post] { | ||
| await withTaskGroup(of: Post.self, returning: [Post].self) { group in | ||
| for post in posts { | ||
| group.addTask { | ||
| let thumbnailImageData = try? await self.provider.request(url: post.board.videoThumbnailURL) | ||
| var thumbnailLoadedPost = post.toDomain() | ||
| thumbnailLoadedPost.thumbnailImageData = thumbnailImageData | ||
| return thumbnailLoadedPost | ||
| } | ||
| } | ||
| var thumbnailLoadedPosts: [Post] = [] | ||
| for await thumbnailLoadedPost in group { | ||
| thumbnailLoadedPosts.append(thumbnailLoadedPost) | ||
| } | ||
| return thumbnailLoadedPosts |
There was a problem hiding this comment.
공통적인 Worker로 빼서 만드는게 아니라 각자 Worker에서 쓰도록 하는 거죠?
There was a problem hiding this comment.
어느정도 모델 어떻게할지 정하면 공통 워커로 뺄 수 있지 않을까 싶습니다 ?
지금 Home이랑 Map에서 쓰는 로직이 아예 똑같아서리..
There was a problem hiding this comment.
중복되면 UserWorker처럼 따로 빼두는 것도 좋긴 하네요 모델 어떻게 할 지만 정하면 되겠군요.
| let member: Member | ||
| let board: Board | ||
| let tag: [String] | ||
| var thumbnailImageData: Data? |
There was a problem hiding this comment.
다른 방법 고민해봤는데, 이 방법이 기존 도메인 모델을 그대로 사용할 수 있으면서, 우리가 원하는 동작을 할 수 있어서 좋은 것 같습니다.
그리고 어차피 다른 모델을 정의한다고 해도, struct여서 값 복사를 필연적으로 이뤄질 수 밖에 없는데,
이 방법은 그런 값 복사에서의 실수도 방지할 수 있겠네요
이 방법으로 적용하는 거 전 찬성하겠습니다👍
loinsir
left a comment
There was a problem hiding this comment.
나머지 부분은 특이사항 없어서 approve 하겠습니다~
이거 머지 해주시면 제 pr도 변경하신 모델 맞춰서 수정할게요
제가 실패한 경우에 홈쪽에 영상도 안보이도록 우선 설정해두긴 했는데요, 만약에 썸네일 다운로드 실패면 uiimageview의 backgroundColor 설정을 어둡게 해서라도 띄울까 하는데 어떨까요? 스켈레톤 뷰 처럼요 |
오오 지금 홈, 지도에서 쓰는 셀은 영상위에 썸네일 올라가있는 형태이죠 ?? 그것도 괜찮은 방법일 것 같습니다 ㅎㅎ |
🧑🚀 PR 요약
해당 pr에서 작업한 내역을 적어주세요.
기존
ThumbnailLoadedPost모델을 삭제하고, 공통Post모델에thumbnailImageData를 추가했습니다.주된 작업은 기존 썸네일 다운로드 작업에 TaksGroup을 사용해서 병렬적으로 다운로드 처리를 했다는 점인데
이미 다른 분들도 적용해보시고, 아시는 부분이라고 생각해 자세한 설명은 안하겠습니다 !
적용하면서 배운 것은 🔎 미루고 미루던 async await 공부 (feat. 이미지 다운로드 병렬 처리)에 간단하게 정리해두었습니다.
다만
ThumbnailImageData다운로드에 실패했을 때 어떻게 처리할지 논의해보면 좋을 것 같아요.저는 썸네일 다운로드에 실패하면 data를 nil로 넣고 영상은 재생할 수 있도록 처리해두었는데, 아예 실패한 경우 영상도 안보여주도록 처리할 수도 있을 것 같아요.
또한 지금
Post모델에thumbnailImageData를 변수로 추가해서 아래와 같은 형식으로 사용했는데요.📌 변경 사항
ThumbnailLoadedPost모델을 삭제Post모델에thumbnailImageData변수 추가📸 ScreenShot
작동, 구현화면
RPReplay_Final1702205422.MP4
Linked Issue
close #