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

[TNT-254] QA 반영 #98

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

[TNT-254] QA 반영 #98

wants to merge 32 commits into from

Conversation

FpRaArNkK
Copy link
Contributor

@FpRaArNkK FpRaArNkK commented Feb 17, 2025

📌 What is the PR?

  • QA 내용을 반영했습니다
  • QA팀 재문의 내용은 추후 반영 예정입니다

🪄 Changes

  • 커밋 참조바랍니다

🔥 PR Point

  1. 기존의 UINavigation관련 제스처 컨트롤 로직을 수정했습니다.
    NavStack에 쌓이는 화면 중 특정 화면들, 특정 일부 플로우에서만 제스처가 비활성화되어야하기 때문에,
    RefCount 개념을 차용하여 -
    현재 표시되고 있는 화면(뒷 화면 + 표시되어지고 있는 화면) 들이 gesture에 대해 비활성화/활성화 인지 체크한 후, onAppear, onDisappear에 상관없이 비활성화를 요구하는 화면 카운트가 기준 아래일 때만 활성화 되도록 진행했습니다.
    사용법은 아래와 같습니다.
SomeView
.navigationPopGestureDisabled()
  1. PhotosPicker는 기본적으로 권한에 상관없이 사용자가 허용한 사진만 READ가 가능합니다. 추후 디벨롭 방향은 CRUD 모두 가능해야하므로, 이를 위해 PhotoPickerWrapper를 작성했습니다.
    권한을 받은 경우에만 사진 선택이 가능하며, 권한을 받지 못해 접근이 불가능한 경우 이를 알리는 PhotoLibraryFeature를 작성했습니다.
    TCA를 통해 단방향 방식으로 작성하였으며, 각 화면에서 이를 내장하여 Alert 표시, 선택된 아이템 가져오기등 여러 액션이 가능합니다.
    사용법은 아래와 같습니다.
// State에서 내부 state로 선언
var photoLibraryState = PhotoLibraryFeature.State()

// Action에서 내부 Action으로 선언
@CasePathable
public enum SubFeatureAction: Sendable {
    case photoLibrary(PhotoLibraryFeature.Action)
}

// Reducer에서 Scope로 내부 State,Action에 Feature 연결
Scope(state: \.photoLibraryState, action: \.subFeature.photoLibrary) {
    PhotoLibraryFeature()
}

// Reducer의 action 처리에서 특정 케이스들 처리
case .subFeature(let internalAction):
    switch internalAction {
    case .photoLibrary(.showPermissionPopup):
        return setPopUpStatus(&state, status: .photoAuthorization)            
    default:
        return .none
}
  1. SwiftUI의 Text에서는 내부 자체적으로 Font의 intrinsic size가 강제되며, lineSpacing이 제대로 적용되지 않는 문제가 있었습니다.
    1줄, n줄과 상관없이 디자인 시스템에서 요구하는 lineSpacing을 표시하기 위해 제시되는 lineHeight보다 intrinsicSize.height가 작은 경우 해당 텍스트의 frame.height를 lineHeight로 표시하게했습니다. 이를 통해 TButton과 다른 텍스트 관련된 UI QA 내용이 모두 해소되었습니다.
    또한 기존 letterSpacing에서 비율로 받은 값을 size에 곱해서 반영하지 않고 있어 해당 부분도 수정했습니다.

🙆🏻 To Reviewers

  • 이미지 캐싱 관련하여 직접 만드는 방법을 고려해봤는데, 메모리 캐싱과 디스크 캐싱을 직접 관리해야하는 비용이 너무 커서 KingFisher 라이브러리 도입 고려중입니다! 어떠신가요?

syss220211 and others added 27 commits February 15, 2025 15:06
- 마이페이지 더블 탭시 발생하는 에러 처리
- 에러 이유 : 마이페이지의 알림 설정여부를 비동기로 가져오는 부분이 tca와 충돌 발생(타이밍 안 맞음)
@FpRaArNkK FpRaArNkK added 🛠️Fix 버그 수정 (UI 레이아웃 깨짐, 크래시, 네트워크 오류 등 해결) ♻️Refactor 리팩토링 (코드 구조 변경, 성능 최적화, 가독성 향상 등) ✨Feat 새로운 기능 구현 (새로운 로직 추가, UI 구현 등) labels Feb 17, 2025
@FpRaArNkK FpRaArNkK requested a review from syss220211 February 17, 2025 17:51
@FpRaArNkK FpRaArNkK self-assigned this Feb 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨Feat 새로운 기능 구현 (새로운 로직 추가, UI 구현 등) 🛠️Fix 버그 수정 (UI 레이아웃 깨짐, 크래시, 네트워크 오류 등 해결) ♻️Refactor 리팩토링 (코드 구조 변경, 성능 최적화, 가독성 향상 등)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants