Skip to content
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

Merged
merged 1 commit into from
Jan 18, 2024

Conversation

Heyjooo
Copy link
Collaborator

@Heyjooo Heyjooo commented Jan 18, 2024

👻 PULL REQUEST

💻 작업한 내용

  • 게시물 좋아요 토글 API 다시 연결

💡 참고사항

  • 마이페이지에서 참고하세요 !

📸 스크린샷

기능 스크린샷
게시글 좋아요
토글

📟 관련 이슈

@@ -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)
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드 리뷰입니다:

  1. NotificationCenter를 이용하여 여러 개의 옵서버를 추가하고 있습니다. 이 경우, NotificationCenter.default.addObserver 문이 길어지므로 가독성을 위해 extension 내부에 별도의 메서드로 분리할 수 있습니다.

  2. likeButtonAction() 메서드에서는 likeButtonTapped 알림을 받았을 때, 해당 동작을 처리하는 코드를 작성하고 있습니다. 그러나, 같은 동작을 수행하는 코드가 다른 곳에서도 존재하며 중복되어 보입니다. 번거롭게 같은 일을 중복으로 처리하는 것을 방지하기 위해, 해당 동작을 담당하는 메서드를 하나로 통합하는 것이 좋을 수 있습니다.

  3. didDismissDetailNotification(_:) 메서드에서 notification 객체를 사용하지 않고 있습니다. 필요하지 않은 매개변수를 제거하여 불필요한 혼동을 줄일 수 있습니다.

  4. getAPI() 메서드에서 likeButtonTapped을 넘기지 않고 있는데, 아마도 수정사항으로 인해 삭제된 것으로 보입니다. 필요 없어진 코드를 정리하는 것이 좋습니다.

  5. toggleLikeButton 구독 부분을 sink로 처리하고 있으며, 결과 값을 단순히 버리는 구조입니다. 결과 값을 사용하지 않으므로, receive(on: RunLoop.main) 등의 별도 처리 없이 .store(in: self.cancelBag)로 간단하게 정리할 수 있습니다.

  6. 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)

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의 값을 사용하도록 변경되었습니다.
  • deleteLikeButtonAPIpostLikeButtonAPI 메서드 호출 시 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)
}
}

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 함수 내의 수정 사항입니다. 이 부분에 대해 리뷰를 진행하겠습니다.

  1. likeNumLabel의 텍스트 값 업데이트:

    • likeNumLabel의 현재 텍스트 값을 가져와서 정수로 변환한 후 1을 더하거나 1을 빼고 다시 문자열로 변환하여 likeNumLabel의 텍스트로 설정합니다.
    • 이 작업은 좋아요 수를 증가시키거나 감소시킵니다.
  2. isLiked 상태 토글:

    • isLiked 상태를 반전시킵니다. 이는 좋아요 버튼이 눌릴 때마다 상태가 변경됨을 의미합니다.
  3. likeButton.setImage 업데이트:

    • isLiked의 값에 따라 likeButton의 이미지를 변경합니다.
  4. NSNotification.Name("likeButtonTapped") 포스트:

    • likeButton이 탭되었음을 나타내는 알림을 보냅니다.

개선사항:

  • 코드에서 if isLiked == true 대신 if isLiked로 표현하는 것이 좀 더 명확하고 간결해집니다.
  • likeNumLabel의 텍스트 값을 가져올 때, 현재 없는 경우를 고려하여 기본값 0을 설정하는 것도 고려해볼만 합니다.

Copy link
Member

@boogios boogios left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3
수고하셨습니다!

Copy link
Collaborator

@yeonsu0-0 yeonsu0-0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

와우 대박~~! 완전 고생했어욤👻👍

@boogios boogios merged commit c7d2538 into develop Jan 18, 2024
1 check passed
@boogios boogios deleted the network/#113-likeButtonToggle branch January 18, 2024 19:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feat] 게시물 좋아요 토글 API 다시 연결
3 participants