-
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
Network [#113] 게시물 좋아요 토글 API 다시 연결 #116
Conversation
@@ -589,6 +595,7 @@ extension PostViewController: UICollectionViewDataSource, UICollectionViewDelega | |||
header.contentTextLabel.text = self.postView.contentTextLabel.text | |||
header.likeNumLabel.text = self.postView.likeNumLabel.text | |||
header.commentNumLabel.text = self.postView.commentNumLabel.text | |||
header.isLiked = self.postView.isLiked | |||
DispatchQueue.main.async { | |||
self.postViewHeight = Int(header.PostbackgroundUIView.frame.height) | |||
} |
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.
코드 리뷰입니다:
-
NotificationCenter를 이용하여 여러 개의 옵서버를 추가하고 있습니다. 이 경우,
NotificationCenter.default.addObserver
문이 길어지므로 가독성을 위해extension
내부에 별도의 메서드로 분리할 수 있습니다. -
likeButtonAction()
메서드에서는likeButtonTapped
알림을 받았을 때, 해당 동작을 처리하는 코드를 작성하고 있습니다. 그러나, 같은 동작을 수행하는 코드가 다른 곳에서도 존재하며 중복되어 보입니다. 번거롭게 같은 일을 중복으로 처리하는 것을 방지하기 위해, 해당 동작을 담당하는 메서드를 하나로 통합하는 것이 좋을 수 있습니다. -
didDismissDetailNotification(_:)
메서드에서notification
객체를 사용하지 않고 있습니다. 필요하지 않은 매개변수를 제거하여 불필요한 혼동을 줄일 수 있습니다. -
getAPI()
메서드에서likeButtonTapped
을 넘기지 않고 있는데, 아마도 수정사항으로 인해 삭제된 것으로 보입니다. 필요 없어진 코드를 정리하는 것이 좋습니다. -
toggleLikeButton
구독 부분을sink
로 처리하고 있으며, 결과 값을 단순히 버리는 구조입니다. 결과 값을 사용하지 않으므로,receive(on: RunLoop.main)
등의 별도 처리 없이.store(in: self.cancelBag)
로 간단하게 정리할 수 있습니다. -
header.isLiked
값을 설정하는 부분에서self.postView.isLiked
를 사용하는데, 이는 기존 코드가 어디에 사용되지 않았기 때문에 확실하지 않습니다. 필요한 변수인지 확인해 보시고, 해당 변수를 정확히 의도한 대로 사용했는지 다시 한 번 확인해 주세요.
이상입니다. 코드 리뷰 내용을 참고하여 코드를 개선해 보시기 바랍니다!
if statusCode == 200 { | ||
self.isLikeButtonClicked.toggle() | ||
self.toggleLikeButton.send(self.isLikeButtonClicked) | ||
} | ||
} else { | ||
let statusCode = try await self.postLikeButtonAPI(contentId: value)?.status | ||
let statusCode = try await self.postLikeButtonAPI(contentId: value.1)?.status | ||
if statusCode == 201 { | ||
self.isLikeButtonClicked.toggle() | ||
self.toggleLikeButton.send(self.isLikeButtonClicked) |
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.
해당 코드 패치에 대한 간단한 코드 리뷰를 도와드리겠습니다.
버그 위험 및 개선 제안:
likeButtonTapped
입력 속성의 타입이 변경되었습니다. 이전에는Int
를 받았지만, 패치 후에는(Bool, Int)
튜플을 받도록 되었습니다. 코드 전반적으로 해당 변경사항을 고려해야 합니다.self.isLikeButtonClicked
변수 확인 부분에서 이제 값 자체가 아니라value.0
의 값을 사용하도록 변경되었습니다.deleteLikeButtonAPI
및postLikeButtonAPI
메서드 호출 시 contentId로value.1
을 전달하도록 변경되었습니다.
추가적으로 다른 부분에서 놓친 버그나 개선 사항이 있는지 상세한 내용은 알 수 없으므로 해당 패치 외에 추가 검토가 필요합니다.
isLiked.toggle() | ||
likeButton.setImage(isLiked ? ImageLiterals.Posting.btnFavoriteActive : ImageLiterals.Posting.btnFavoriteInActive, for: .normal) | ||
|
||
NotificationCenter.default.post(name: NSNotification.Name("likeButtonTapped"), object: nil, userInfo: 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.
아래는 코드 패치입니다. 코드 리뷰를 간단히 도와드리겠습니다. 버그 위험 및 개선 제안이 있으면 알려주세요:
@@ -282,8 +282,13 @@ extension PostCollectionViewHeader {
@objc
func likeToggleButton() {
- if isLiked == true {
-
likeNumLabel.text = String((Int(likeNumLabel.text ?? "") ?? 0) - 1)
- } else {
-
likeNumLabel.text = String((Int(likeNumLabel.text ?? "") ?? 0) + 1)
- }
isLiked.toggle()
likeButton.setImage(isLiked ? ImageLiterals.Posting.btnFavoriteActive : ImageLiterals.Posting.btnFavoriteInActive, for: .normal)
- NotificationCenter.default.post(name: NSNotification.Name("likeButtonTapped"), object: nil, userInfo: nil)
}
}
이 코드 패치의 주요 변경점은 likeToggleButton 함수 내의 수정 사항입니다. 이 부분에 대해 리뷰를 진행하겠습니다.
-
likeNumLabel
의 텍스트 값 업데이트:likeNumLabel
의 현재 텍스트 값을 가져와서 정수로 변환한 후 1을 더하거나 1을 빼고 다시 문자열로 변환하여likeNumLabel
의 텍스트로 설정합니다.- 이 작업은 좋아요 수를 증가시키거나 감소시킵니다.
-
isLiked
상태 토글:isLiked
상태를 반전시킵니다. 이는 좋아요 버튼이 눌릴 때마다 상태가 변경됨을 의미합니다.
-
likeButton.setImage
업데이트:isLiked
의 값에 따라likeButton
의 이미지를 변경합니다.
-
NSNotification.Name("likeButtonTapped")
포스트:likeButton
이 탭되었음을 나타내는 알림을 보냅니다.
개선사항:
- 코드에서
if isLiked == true
대신if isLiked
로 표현하는 것이 좀 더 명확하고 간결해집니다. likeNumLabel
의 텍스트 값을 가져올 때, 현재 없는 경우를 고려하여 기본값 0을 설정하는 것도 고려해볼만 합니다.
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.
와우 대박~~! 완전 고생했어욤👻👍
👻 PULL REQUEST
💻 작업한 내용
💡 참고사항
📸 스크린샷
토글
📟 관련 이슈