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

[Feat] #317 - 식당 정보 다를 시 제보 화면 구현 #323

Merged
merged 9 commits into from
Dec 26, 2024

Conversation

EunsuSeo01
Copy link
Member

@EunsuSeo01 EunsuSeo01 commented Dec 26, 2024

🔥 Pull requests

👷 작업한 내용

🚨 참고 사항

  • @mcrkgus 엄마 제가 HomeVM에 코드를 추가했습니도 (주요 코드 설명 참고)
  • 그리고 원래 홈 맵뷰 클릭할 때 실행되던 코드들을 showHankkiListBottomSheet 함수로 묶어서 관리하도록 했습니다.

📸 스크린샷

구현 내용 SE 13 mini 15 pro
GIF

🖥️ 주요 코드 설명

  • 식당 삭제가 성공하면 Alert가 뜸 -> 확인 버튼 누르면 이전 화면으로 돌아가야 함
  • dismiss 1번에 pop을 2번 해서 나가야 하는데 이건 popToThreeStepsBack 함수 만들어서 해결함
  • 그런데 홈에서 상세로 들어왔다가 나가는 경우에는 나가도 그 삭제된 식당의 썸네일(포커싱 되어 있다는 뜻)이 뜨는 게 문제 -> 썸네일 없애고 전체 식당 리스트 리로드 하고 바텀 시트를 위로 올려야 됨
  • 그래서 HomeVM을 건드렸습니다. contains 함수를 통해 포커싱 하고 있는 썸네일이 삭제된 식당인지 확인하고, 맞으면showHankkiListBottomSheet 클로저를 호출하여 HomeVC에서 전체 식당 리스트 바텀 시트를 올려줍니다!

HomeViewModel

// 포커싱하고 있는 식당이 삭제된 식당인지 아닌지 확인
func checkThumbnailHankkiValidation() {
        let isValid = hankkiLists.contains { $0.id == hankkiThumbnail?.id ?? 0 }
        if !isValid {
            showHankkiListBottomSheet?()
        }
}

HomeViewController

viewModel.hankkiListsDidChange = { [weak self] data in
            guard let self = self else { return }

            self.viewModel.checkThumbnailHankkiValidation() // 한끼 리스트 변경될 때 썸네일 validation 확인
...
viewModel.showHankkiListBottomSheet = {
            self.showHankkiListBottomSheet()
}

func showHankkiListBottomSheet() { // 맵뷰 클릭할 때마다 실행되던 코드를 함수화 함 -> 이거로 바텀 시트가 올라옴
        self.rootView.bottomSheetView.viewLayoutIfNeededWithDownAnimation()
        self.hideMarkerInfoCard()
}

RemoveHankkiViewController

// 전체 식당 리스트가 떠있는 홈으로 이동
    func popToThreeStepsBack() {
        if let viewControllers = self.navigationController?.viewControllers {
            if viewControllers.count > 2 {
                self.navigationController?.popToViewController(viewControllers[viewControllers.count - 3], animated: true)
            }
        }
    }
  • popToViewController로 쓰리 스텝 전의 화면으로 돌아갈 수 있게 했습니다.

✅ Check List

  • Merge 대상 브랜치가 올바른가?
  • 최종 코드가 에러 없이 잘 동작하는가?
  • 전체 변경사항이 500줄을 넘지 않는가?

📟 관련 이슈

@EunsuSeo01 EunsuSeo01 added 🍚 Feat 새로운 기능 구현 🎨 Design UI 디자인을 구현하거나 변경 🐬 은수 은수 공주 작업 labels Dec 26, 2024
@EunsuSeo01 EunsuSeo01 self-assigned this Dec 26, 2024
Copy link
Contributor

@shimseohyun shimseohyun left a comment

Choose a reason for hiding this comment

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

그녀의 값진 크리스마스
고생했어요
크리스마스 선물로 멋진 트리를 드릴게요

        *
       ***
      *****
     *******
    *********
   ***********
  *************
       |||

@@ -102,6 +102,9 @@ final class HomeViewController: BaseViewController, NetworkResultDelegate {
private func bindViewModel() {
viewModel.hankkiListsDidChange = { [weak self] data in
guard let self = self else { return }

self.viewModel.checkThumbnailHankkiValidation()
Copy link
Contributor

Choose a reason for hiding this comment

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

이런 함수도 뷰모델로 빼눈거군요 참고하겠습니다

Copy link
Member Author

Choose a reason for hiding this comment

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

checkThumbnailHankkiValidation 함수 내에서 다루는 데이터들(hankkiLists, hankkiThumbnail)이 VM에서 관리되고 있었기 때문에 요렇게 진행했습니다 비즈니스 로직이기도 하고...

if UIScreen.hasNotch {
$0.bottom.equalToSuperview()
} else {
$0.bottom.equalTo(view.safeAreaLayoutGuide).offset(30) // SE 대응
Copy link
Contributor

Choose a reason for hiding this comment

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

DAMM~~~~~~~~
LGTM

Comment on lines +150 to +156
func popToThreeStepsBack() {
if let viewControllers = self.navigationController?.viewControllers {
if viewControllers.count > 2 {
self.navigationController?.popToViewController(viewControllers[viewControllers.count - 3], animated: true)
}
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

이전의 이전의 이전

collectionView.do {
$0.backgroundColor = .clear
$0.isScrollEnabled = false
Copy link
Contributor

Choose a reason for hiding this comment

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

여긴 . 왜 스크롤이 불가한가요? 그냥 궁금

Copy link
Member Author

Choose a reason for hiding this comment

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

아 원래 컬뷰 높이 설정을 해두었을 때 추가했던 코드인데 지금은 그렇게 해두지 않아서 레전드 무쓸모네요
고맙소 처단하겠소

불필요한 컬뷰 속성 설정 코드 삭제
@EunsuSeo01 EunsuSeo01 merged commit c9a46ba into develop Dec 26, 2024
@EunsuSeo01 EunsuSeo01 deleted the feat/#317 branch December 26, 2024 15:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🎨 Design UI 디자인을 구현하거나 변경 🍚 Feat 새로운 기능 구현 🐬 은수 은수 공주 작업
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feat] 식당 상세 화면 UI 변경 - 식당 정보 다를 시 제보 화면
2 participants