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

[Fix] #289 - 2차 스프린트 기능 QA 반영 #294

Open
wants to merge 47 commits into
base: develop
Choose a base branch
from

Conversation

EunsuSeo01
Copy link
Member

@EunsuSeo01 EunsuSeo01 commented Nov 17, 2024

🔥 Pull requests

👷 작업한 내용

  • 미완성이었던 메뉴 추가 기능을 완성했습니다.
  • 1차 및 2차 기능 QA를 반영했습니다.
  • ModifyMenuTextField 컴포넌트 로직 개선을 진행했습니다.

🖥️ 주요 코드 설명

ModifyMenuTextField 이벤트에 따른 스타일 활성/비활성 로직 개선

  • 메뉴 수정 텍스트필드가 가질 수 있는 스타일은 총 4개로, enum을 통해 구분했습니다.

ModifyMenuTextFieldType.swift

enum ModifyMenuTextFieldType {
    case focused
    case unfocused
    case focusedWithError
    case unfocusedWithError
}
  • type에 따라 함수를 다르게 호출함으로써 다른 스타일을 적용하고자 했습니다.

ModifyMenuTextField.swift

func updateStyle(type: ModifyMenuTextFieldType) {
    switch type {
    case .focused:
        updateStyleBy(isFocus: true)
        toggleAccessoryViewVisibility(isDeleteHidden: true)
    case .unfocused:
        updateStyleBy(isFocus: false)
    case .focusedWithError:
        updateStyleBy(isFocus: true)
        updateErrorStyleBy(isFocus: true)
        toggleAccessoryViewVisibility(isDeleteHidden: false)
    case .unfocusedWithError:
        updateStyleBy(isFocus: false)
        updateErrorStyleBy(isFocus: false)
    }
}

메뉴 추가/수정/삭제 완료 후, 식당 상세 페이지의 메뉴 목록 or 메뉴 편집의 메뉴 목록 내용 업데이트

스크린샷 2024-11-17 오후 11 10 08
  • 메뉴 추가/수정/삭제 완료 화면에서 버튼 클릭 시 postNotification 함수를 실행하여 식당 상세 화면 또는 메뉴 편집 화면의 메뉴 목록을 업데이트 하도록 구현했습니다.

MenuCompleteView.swift

private extension MenuCompleteView {
    
    func postNotification() {
        NotificationCenter.default.post(Notification(name: NSNotification.Name(StringLiterals.NotificationName.reloadHankkiDetail)))
    }
    
    @objc func doThisAgainButtonDidTap() {
        postNotification()
        doThisAgainButtonAction?()
    }
}

메뉴 모델 변환 로직 작성

  • 메뉴 관련 모델들이 형태가 조금씩 다릅니다. 예를 들어 요청으로 보낼 때는 id 값이 없어야 하지만, 응답에서는 id 값이 있다든가.
  • 그래서 데이터 간의 형태 변환이 필요했고, 이를 MenuDataextension에 함수로 작성했습니다.

GetHankkiDetailResponseDTO.swift

struct MenuData: Codable {
    var id: Int = 0
    var name: String = ""
    var price: Int = 0
}

extension MenuData {
    func toMenuRequestDTO() -> MenuRequestDTO {
        return MenuRequestDTO(
            name: self.name,
            price: self.price
        )
    }
}

✅ Check List

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

📟 관련 이슈

제보하기의 메뉴 셀에도 동일하게 적용 완료함
MenuData에서 MenuRequestDTO로 구조를 변경하는 toMenuRequestDTO 함수도 추가함
removeConstraints 후 다시 makeConstraints 함으로써 높이 안 늘어나던 이슈 해결
다른 메뉴도 추가하기 클릭했을 때를 대비
doThisAgainButton 클릭 후 네비바의 뒤로가기 버튼 클릭 시에 식당 상세 화면이 나오는데
이때에도 업데이트 된 최신 메뉴 리스트를 보여주기 위해서
API 구현 전이라 임의로 식당 상세 보기의 API에서 메뉴 리스트만 가져와서 썼던 걸 새 API로 변경
서버가 dto 구조 하나로 통일해줘서 반영함
편집에서 바로 삭제 시 로직 변경
수정 중에 가격 넘어서 삭제할 때에도 적용함
문구를 포함하여 버튼 로직 변경
원래는 연필 버튼 클릭 시에만 수정 가능하게 막아뒀었는데 이를 없앰
연필 버튼 클릭 시와 동일한 로직으로 동작하도록 탭 제스처 추가함
원래 값과 메뉴 이름 또는 가격이 다를 때에만 활성화 되도록
하나의 프로토콜에 있던 함수 2개를 각각의 프로토콜로 분리했다
AddVC에서는 원래 프로토콜의 함수 중 1개의 함수만 사용했기 때문이다
로직을 간소화 하고 알아보기 쉽게 동작마다 함수로 분
@EunsuSeo01 EunsuSeo01 added 🛠️ Fix 버그, 오류 해결 🐬 은수 은수 공주 작업 labels Nov 17, 2024
@EunsuSeo01 EunsuSeo01 self-assigned this Nov 17, 2024
@EunsuSeo01 EunsuSeo01 linked an issue Nov 17, 2024 that may be closed by this pull request
2 tasks
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.

많은 변경사항에 군말 없이 묵묵하게 해내어주는 모습에 오늘도 감동...
어서 나도 1인분을 하는 날이 오길 바라며...
approve를 드립니다

Comment on lines -32 to +33
return !(name.isEmpty) && (price <= 8000)
return !(modifiedMenuData.name.isEmpty) && (modifiedMenuData.price > 0) && (modifiedMenuData.price <= 8000) && ((modifiedMenuData.name != selectedMenu.name) || (modifiedMenuData.price != selectedMenu.price))
Copy link
Contributor

Choose a reason for hiding this comment

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

멋진 식이에요

Comment on lines +160 to 175
func addMenuData() {
if reportViewModel.menus.count == 1 {
updateFirstXButtonIsHidden()
}

reportViewModel.menus.append(MenuData())
collectionView.insertItems(at: [IndexPath(item: reportViewModel.menus.count - 1, section: ReportSectionType.menu.rawValue)])
}

func updateFirstXButtonIsHidden() {
guard let cell = collectionView.cellForItem(
at: IndexPath(item: reportViewModel.menus.count - 1, section: ReportSectionType.menu.rawValue)
) as? MenuCollectionViewCell else { return }
cell.deleteMenuButton.isHidden = false
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

이것또한 깔끔하고 좋네요

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐬 은수 은수 공주 작업 🛠️ Fix 버그, 오류 해결
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Fix] 2차 스프린트 기능 QA 반영
2 participants