Skip to content

[REFACTOR/#55] 리팩토링 - #56

Merged
oilbeaneda merged 38 commits into
developfrom
refactor/#55-refactoring
Jul 21, 2026
Merged

oilbeaneda merged 38 commits into
developfrom
refactor/#55-refactoring

Conversation

@oilbeaneda

@oilbeaneda oilbeaneda commented Jul 20, 2026 •

Copy link
Copy Markdown
Member

Related issue 🛠

Work Description ✏️

  • 리팩토링

Screenshot 📸

Uncompleted Tasks 😅

  • Task1

Summary by CodeRabbit

  • 새 기능
    • 위시리스트를 “즐겨찾기”로 개편해 즐겨찾기 펍을 확인하고 편집·삭제할 수 있습니다.
    • 지역/구단/시설/음식/영업일 필터를 일관되게 제공하며, “서울 전체” 선택 시 지도와 연동됩니다.
    • 검색 결과의 로딩 및 결과 없음 상태를 지원합니다.
  • 버그 수정
    • 팀 로고를 찾을 수 없는 경우 팀명으로 표시되게 개선했습니다.
    • 지도 앱 연결 및 필터 코드 처리를 안정화했습니다.
  • 접근성/UX
    • 주요 버튼·칩의 최소 터치 타겟을 보강했습니다.

- presentation/mypage/wishlist 패키지·클래스(Wishlist*)를 favorite/Favorite*로 리네임
- WishlistItem→FavoritePubItem (data.model.FavoriteItem 충돌 회피)
- PubDetail.isWishlisted→isFavorited 등 데이터/상세 계층 정합
- 리소스 img_wishlist_item→img_favorite_item, 한글 contentDescription 찜→즐겨찾기
- 코드베이스 favorite 용어로 통일(서버 API 동일)
@oilbeaneda oilbeaneda self-assigned this Jul 20, 2026
@oilbeaneda oilbeaneda added the Refactor ♻️ 기능 변경 없이 코드 구조를 개선하여 가독성, 유지보수성, 성능을 향상 label Jul 20, 2026
@coderabbitai

coderabbitai Bot commented Jul 20, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@oilbeaneda, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 54 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 2a839fcf-2980-415e-9e44-7388ca283c10

📥 Commits

Reviewing files that changed from the base of the PR and between 5da9265 and 52adac3.

📒 Files selected for processing (4)
  • app/src/main/java/org/app/presentation/home/HomeViewModel.kt
  • app/src/main/java/org/app/presentation/home/component/HomePubBottomSheet.kt
  • app/src/main/java/org/app/presentation/home/pubfilter/PubFilterCodes.kt
  • app/src/main/java/org/app/presentation/home/pubfilter/PubFilterContract.kt
📝 Walkthrough

Walkthrough

팀·지역·필터 데이터를 도메인 enum과 공통 계약으로 통합하고, 여러 화면 상태를 불변 컬렉션 기반으로 변경했습니다. 위시리스트 기능은 즐겨찾기 기능으로 전환되었으며, 펍 상세·홈·일정·회원가입 UI가 새 모델과 로고 fallback을 사용합니다.

Changes

도메인 및 필터 계약

Layer / File(s) Summary
도메인 모델과 필터 코드 중앙화
app/src/main/java/org/app/domain/model/KboTeamType.kt, app/src/main/java/org/app/presentation/home/model/SeoulRegion.kt, app/src/main/java/org/app/presentation/home/pubfilter/*
팀·지역·시설·음식·영업일 필터 코드와 표시 라벨을 enum 및 공통 계약으로 정의했습니다.
홈 필터와 지도 상태 갱신
app/src/main/java/org/app/presentation/home/HomeContract.kt, app/src/main/java/org/app/presentation/home/HomeViewModel.kt, app/src/main/java/org/app/presentation/home/component/*
필터 키와 지역 코드를 상수화하고, 지도 목록·즐겨찾기·오버레이 상태를 불변 컬렉션으로 저장하도록 변경했습니다.

즐겨찾기 전환

Layer / File(s) Summary
마이페이지 즐겨찾기 계약과 화면
app/src/main/java/org/app/presentation/mypage/MyPage*.kt, app/src/main/java/org/app/presentation/mypage/favorite/*
위시리스트 계약·아이템·화면·컴포넌트·내비게이션을 즐겨찾기 명칭과 모델로 전환했습니다.
즐겨찾기 로딩·삭제 흐름
app/src/main/java/org/app/presentation/mypage/favorite/FavoriteViewModel.kt
즐겨찾기 조회, 선택 삭제, 하트 삭제, 선택 상태 및 토스트 사이드이펙트를 처리합니다.

상세 및 상태 전환

Layer / File(s) Summary
펍 상세 즐겨찾기 상태
app/src/main/java/org/app/data/model/PubDetail.kt, app/src/main/java/org/app/presentation/pubdetail/*
isWishlisted 계열 계약과 이벤트를 isFavoriteed 및 즐겨찾기 이벤트로 교체했습니다.
검색·일정·신고·회원가입 상태
app/src/main/java/org/app/presentation/home/homesearch/*, app/src/main/java/org/app/presentation/schedule/*, app/src/main/java/org/app/presentation/mypage/report/*, app/src/main/java/org/app/presentation/onboarding/signup/*
상태 컬렉션과 ViewModel 갱신 결과를 ImmutableList/ImmutableSet으로 변경하고, 검색 입력은 snapshotFlow로 수집합니다.

공통 UI

Layer / File(s) Summary
팀 로고 fallback과 일정 렌더링
app/src/main/java/org/app/core/designsystem/component/MoballBaseballTeamBadge.kt, app/src/main/java/org/app/presentation/schedule/component/*
팀 enum에서 로고를 조회하고, 로고가 없으면 팀명을 표시하도록 변경했습니다. 일정 항목에는 안정적인 Compose key와 메모이제이션을 적용했습니다.
최소 터치 타겟과 디자인 토큰
app/src/main/java/org/app/core/extension/ModifierExt.kt, app/src/main/java/org/app/core/designsystem/*, app/src/main/java/org/app/presentation/**
minTouchTarget()을 추가해 클릭 요소에 적용하고, MoballSpacing 및 Compose 컴파일러 리포트 경로를 추가했습니다.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

Suggested labels: Add ➕, 📱UI

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 12.64% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive 제목이 리팩토링이라는 큰 방향은 맞지만 너무 일반적이라 변경 내용을 구체적으로 드러내지 못합니다. 주요 변경을 한 문장으로 구체화해 제목을 수정하세요. 예: immutable 컬렉션 전환 및 마이페이지/펍 상세 리팩토링처럼요.
✅ Passed checks (3 passed)
Check name Status Explanation
Description check ✅ Passed 필수 섹션은 모두 포함되어 있고 이슈 연결과 미완료 작업도 기재되어 있어 템플릿을 대부분 충족합니다.
Linked Issues check ✅ Passed 전반적인 가독성과 유지보수성 향상을 위한 리팩토링으로 보이며, 링크된 #55의 목적과 일치합니다.
Out of Scope Changes check ✅ Passed 불변 컬렉션 전환, 네이밍 정리, 공통 코드화, 터치 타겟 보정 등은 모두 리팩토링 범위로 해석됩니다.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/#55-refactoring

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
app/src/main/java/org/app/presentation/home/pubfilter/PubFilterViewModel.kt (1)

100-129: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

loadTeams()가 PubFilterContract.State.resolvedSections와 동일한 TEAM 섹션 변환을 수행합니다.

PubFilterContract.kt에서 이미 논의한 중복 로직입니다. 하단 통합 코멘트를 참고해 주세요.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/src/main/java/org/app/presentation/home/pubfilter/PubFilterViewModel.kt`
around lines 100 - 129, Update loadTeams() to stop constructing and replacing
the TEAM section locally; after updating teams, rely on
PubFilterContract.State.resolvedSections for the TEAM section transformation.
Remove the duplicated PubFilterSection and section-mapping logic while
preserving the existing team loading and failure side effect behavior.
app/src/main/java/org/app/presentation/home/HomeViewModel.kt (1)

176-199: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

펍 이름은 URI 컴포넌트로 인코딩해서 넣어주세요.
event.name을 카카오 웹 폴백(/link/map/...)과 네이버 딥링크/웹 폴백에 그대로 붙이면 공백, 한글, & 같은 문자가 URL 파싱을 깨뜨릴 수 있습니다. Uri.encode(event.name)를 적용해 주세요.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/src/main/java/org/app/presentation/home/HomeViewModel.kt` around lines
176 - 199, Apply Uri.encode(event.name) before interpolating the pub name in the
Kakao web fallback, Naver deep link, and Naver web fallback within the
OnKakaoMapClick and OnNaverMapClick handlers. Reuse the encoded value
consistently so spaces, Korean text, ampersands, and other URL-sensitive
characters remain valid URI components.
🧹 Nitpick comments (6)
app/src/main/java/org/app/presentation/pubdetail/PubDetailViewModel.kt (1)

91-122: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

isFavoriteed 프로퍼티 네이밍 오탈자 개선 제안

코드 전반에 걸쳐 사용 중인 isFavoriteed는 영문법상 다소 어색한 표현입니다. 모델 클래스(PubDetail) 단에서 isFavorited 혹은 isFavorite으로 수정하는 것을 권장합니다.

  • app/src/main/java/org/app/presentation/pubdetail/PubDetailViewModel.kt#L91-L122: 상태 복사 시 isFavoriteed = true로 할당하는 부분의 네이밍 수정이 필요합니다.
  • app/src/main/java/org/app/presentation/pubdetail/PubDetailViewModel.kt#L153-L163: 즐겨찾기 해제 시 isFavoriteed = false로 할당하는 부분의 네이밍 수정이 필요합니다.
  • app/src/main/java/org/app/presentation/pubdetail/PubDetailViewModel.kt#L185-L185: 초기 상세 데이터 로드 시 사용하는 isFavoriteed 파라미터의 네이밍 수정이 필요합니다.
  • app/src/main/java/org/app/presentation/pubdetail/PubDetailScreen.kt#L123-L128: UI에 값을 바인딩하는 detail.isFavoriteed의 네이밍 수정이 필요합니다.
  • app/src/main/java/org/app/presentation/pubdetail/PubDetailScreen.kt#L210-L210: 프리뷰 내 목업 데이터 생성 시 사용하는 isFavoriteed의 네이밍 수정이 필요합니다.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/src/main/java/org/app/presentation/pubdetail/PubDetailViewModel.kt`
around lines 91 - 122, Rename the PubDetail model property isFavoriteed to
isFavorited (or the project’s established equivalent) and update every reference
consistently. Apply the rename in PubDetailViewModel.kt at lines 91-122,
153-163, and 185, and in PubDetailScreen.kt at lines 123-128 and 210, including
assignments, UI bindings, and preview data.
app/src/main/java/org/app/presentation/mypage/favorite/FavoriteScreen.kt (1)

181-181: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

안전한 Compose 리스트 Key 사용

chunked된 row의 첫 번째 아이템 ID만 key로 사용할 경우, 중간이나 마지막 아이템이 삭제될 때 Compose가 row 내부 구조가 변경되었음을 정확히 인지하지 못해 재구성(recomposition) 시 UI 결함이 발생할 수 있습니다. Row 내의 모든 ID를 조합하여 고유한 키를 생성하는 것을 권장합니다.

💡 제안하는 수정안
-                    items(rows, key = { row -> row.first().favoriteId }) { rowItems ->
+                    items(rows, key = { row -> row.joinToString("_") { it.favoriteId.toString() } }) { rowItems ->
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/src/main/java/org/app/presentation/mypage/favorite/FavoriteScreen.kt` at
line 181, Update the Lazy list key in the items call within FavoriteScreen so it
is derived from all favoriteId values in each chunked row, rather than only
row.first().favoriteId. Build a stable unique key from the complete row while
preserving the existing row rendering behavior.
app/src/main/java/org/app/data/model/PubDetail.kt (1)

32-32: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

오타 수정

isFavoriteed는 영어 문법상 isFavorited가 자연스럽습니다. 데이터 모델 클래스의 프로퍼티이므로 추후 직렬화나 다른 참조에서 혼선이 없도록 올바른 철자로 수정하는 것을 권장합니다.

💡 제안하는 수정안
-    val isFavoriteed: Boolean = false,
+    val isFavorited: Boolean = false,
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/src/main/java/org/app/data/model/PubDetail.kt` at line 32, Correct the
PubDetail property name from isFavoriteed to isFavorited, and update all
references, serialization mappings, and callers to use the corrected identifier
consistently.
app/src/main/java/org/app/presentation/home/component/HomePubBottomSheet.kt (2)

67-67: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

DRINK_CODES가 HomeViewModel.kt의 인라인 리스트와 중복됩니다.

동일한 4개 술 코드 조합이 HomeViewModel.applyQuickFilter의 VARIOUS_DRINKS 분기에도 하드코딩되어 있습니다. 공용 상수로 추출해 두 곳에서 재사용하면 한쪽만 바뀌어 어긋나는 위험을 줄일 수 있습니다. 하단 통합 코멘트에서 함께 정리합니다.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/src/main/java/org/app/presentation/home/component/HomePubBottomSheet.kt`
at line 67, Extract the shared four-code drink set from DRINK_CODES and the
inline list used by HomeViewModel.applyQuickFilter’s VARIOUS_DRINKS branch into
a common constant. Update both call sites to reuse that constant, preserving the
existing filtering behavior.

527-538: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

isFavoriteed 네이밍 — HomeViewModel.kt와 동일한 이슈입니다.

하단 통합 코멘트에서 함께 정리합니다.

Also applies to: 698-698

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/src/main/java/org/app/presentation/home/component/HomePubBottomSheet.kt`
around lines 527 - 538, Rename the misspelled `isFavoriteed` property usage in
the bottom-sheet UI to the corrected favorite-state name used by
`HomeViewModel`, updating both the heart drawable selection and tint condition
while preserving their existing behavior.
app/src/main/java/org/app/presentation/home/HomeViewModel.kt (1)

328-334: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

isFavoriteed 네이밍이 문법적으로 어색합니다.

isFavorite + ed가 겹쳐 "isFavoriteed"가 되었습니다. 올바른 영어 과거분사형은 isFavorited입니다. HomePubBottomSheet.kt에도 동일하게 나타나므로, 관련 리네이밍은 하단 통합 코멘트에서 함께 정리합니다.

Also applies to: 382-386, 421-453

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/src/main/java/org/app/presentation/home/HomeViewModel.kt` around lines
328 - 334, Rename the misspelled isFavoriteed variable and all related
references in the HomeViewModel favorite-state flows to isFavorited, including
the occurrences covered by the additional ranges. Coordinate the same naming
correction with HomePubBottomSheet.kt as requested by the integrated comment.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@app/src/main/java/org/app/presentation/home/HomeViewModel.kt`:
- Around line 538-556: Update HomeFilter.applyQuickFilter’s “VARIOUS_DRINKS”
branch to determine toggling from whether the existing foodCodes contains any
configured drink code, rather than merely being non-empty. Remove only the drink
codes when disabling the filter while preserving unrelated selections such as
CHICKEN; when enabling it, add the defined drink codes without duplicating
existing entries.

In `@app/src/main/java/org/app/presentation/home/pubfilter/PubFilterContract.kt`:
- Around line 25-34: resolvedSections가 사용되지 않는 중복 상태이므로 단일 소스가 되도록 정리하세요.
PubFilterScreen이 state.sections 대신 resolvedSections를 읽고
PubFilterViewModel.loadTeams()의 TEAM 섹션 직접 갱신을 제거하거나, resolvedSections와 관련
주석·로직을 삭제해 loadTeams()의 갱신만 유지하세요. 두 경로가 동시에 TEAM 섹션을 관리하지 않도록 합니다.

In
`@app/src/main/java/org/app/presentation/mypage/component/MyPageFavoriteSection.kt`:
- Line 58: Update the clickable favorite icon in the surrounding composable to
provide at least a 48dp touch target and add an appropriate contentDescription
for screen readers, while preserving the existing onFavoriteClick behavior.

---

Outside diff comments:
In `@app/src/main/java/org/app/presentation/home/HomeViewModel.kt`:
- Around line 176-199: Apply Uri.encode(event.name) before interpolating the pub
name in the Kakao web fallback, Naver deep link, and Naver web fallback within
the OnKakaoMapClick and OnNaverMapClick handlers. Reuse the encoded value
consistently so spaces, Korean text, ampersands, and other URL-sensitive
characters remain valid URI components.

In `@app/src/main/java/org/app/presentation/home/pubfilter/PubFilterViewModel.kt`:
- Around line 100-129: Update loadTeams() to stop constructing and replacing the
TEAM section locally; after updating teams, rely on
PubFilterContract.State.resolvedSections for the TEAM section transformation.
Remove the duplicated PubFilterSection and section-mapping logic while
preserving the existing team loading and failure side effect behavior.

---

Nitpick comments:
In `@app/src/main/java/org/app/data/model/PubDetail.kt`:
- Line 32: Correct the PubDetail property name from isFavoriteed to isFavorited,
and update all references, serialization mappings, and callers to use the
corrected identifier consistently.

In `@app/src/main/java/org/app/presentation/home/component/HomePubBottomSheet.kt`:
- Line 67: Extract the shared four-code drink set from DRINK_CODES and the
inline list used by HomeViewModel.applyQuickFilter’s VARIOUS_DRINKS branch into
a common constant. Update both call sites to reuse that constant, preserving the
existing filtering behavior.
- Around line 527-538: Rename the misspelled `isFavoriteed` property usage in
the bottom-sheet UI to the corrected favorite-state name used by
`HomeViewModel`, updating both the heart drawable selection and tint condition
while preserving their existing behavior.

In `@app/src/main/java/org/app/presentation/home/HomeViewModel.kt`:
- Around line 328-334: Rename the misspelled isFavoriteed variable and all
related references in the HomeViewModel favorite-state flows to isFavorited,
including the occurrences covered by the additional ranges. Coordinate the same
naming correction with HomePubBottomSheet.kt as requested by the integrated
comment.

In `@app/src/main/java/org/app/presentation/mypage/favorite/FavoriteScreen.kt`:
- Line 181: Update the Lazy list key in the items call within FavoriteScreen so
it is derived from all favoriteId values in each chunked row, rather than only
row.first().favoriteId. Build a stable unique key from the complete row while
preserving the existing row rendering behavior.

In `@app/src/main/java/org/app/presentation/pubdetail/PubDetailViewModel.kt`:
- Around line 91-122: Rename the PubDetail model property isFavoriteed to
isFavorited (or the project’s established equivalent) and update every reference
consistently. Apply the rename in PubDetailViewModel.kt at lines 91-122,
153-163, and 185, and in PubDetailScreen.kt at lines 123-128 and 210, including
assignments, UI bindings, and preview data.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 6efa3b24-be92-467e-a9b0-84f27df39e1b

📥 Commits

Reviewing files that changed from the base of the PR and between 2e9cdd2 and 9982d64.

⛔ Files ignored due to path filters (1)
  • app/src/main/res/drawable/img_favorite_item.png is excluded by !**/*.png and included by none
📒 Files selected for processing (53)
  • app/build.gradle.kts
  • app/src/main/java/org/app/core/designsystem/component/MoballBaseballTeamBadge.kt
  • app/src/main/java/org/app/core/designsystem/theme/Spacing.kt
  • app/src/main/java/org/app/data/model/PubDetail.kt
  • app/src/main/java/org/app/domain/model/KboTeamType.kt
  • app/src/main/java/org/app/presentation/home/HomeContract.kt
  • app/src/main/java/org/app/presentation/home/HomeViewModel.kt
  • app/src/main/java/org/app/presentation/home/component/HomeFilterBottomSheet.kt
  • app/src/main/java/org/app/presentation/home/component/HomePubBottomSheet.kt
  • app/src/main/java/org/app/presentation/home/homesearch/HomeSearchContract.kt
  • app/src/main/java/org/app/presentation/home/homesearch/HomeSearchScreen.kt
  • app/src/main/java/org/app/presentation/home/homesearch/HomeSearchViewModel.kt
  • app/src/main/java/org/app/presentation/home/model/HomeModel.kt
  • app/src/main/java/org/app/presentation/home/model/SeoulRegion.kt
  • app/src/main/java/org/app/presentation/home/pubfilter/PubFilterCodes.kt
  • app/src/main/java/org/app/presentation/home/pubfilter/PubFilterContract.kt
  • app/src/main/java/org/app/presentation/home/pubfilter/PubFilterScreen.kt
  • app/src/main/java/org/app/presentation/home/pubfilter/PubFilterViewModel.kt
  • app/src/main/java/org/app/presentation/mypage/MyPageContract.kt
  • app/src/main/java/org/app/presentation/mypage/MyPageNavigation.kt
  • app/src/main/java/org/app/presentation/mypage/MyPageScreen.kt
  • app/src/main/java/org/app/presentation/mypage/MyPageViewModel.kt
  • app/src/main/java/org/app/presentation/mypage/component/MyPageAddSportsCard.kt
  • app/src/main/java/org/app/presentation/mypage/component/MyPageFavoriteSection.kt
  • app/src/main/java/org/app/presentation/mypage/component/MyPageTeamSelectBottomSheet.kt
  • app/src/main/java/org/app/presentation/mypage/editprofile/EditProfileScreen.kt
  • app/src/main/java/org/app/presentation/mypage/favorite/FavoriteContract.kt
  • app/src/main/java/org/app/presentation/mypage/favorite/FavoriteScreen.kt
  • app/src/main/java/org/app/presentation/mypage/favorite/FavoriteViewModel.kt
  • app/src/main/java/org/app/presentation/mypage/favorite/component/FavoriteEditButton.kt
  • app/src/main/java/org/app/presentation/mypage/favorite/component/FavoriteItemCard.kt
  • app/src/main/java/org/app/presentation/mypage/favorite/component/FavoritePreviewCard.kt
  • app/src/main/java/org/app/presentation/mypage/favorite/navigation/FavoriteNavigation.kt
  • app/src/main/java/org/app/presentation/mypage/report/ReportContract.kt
  • app/src/main/java/org/app/presentation/mypage/report/ReportScreen.kt
  • app/src/main/java/org/app/presentation/mypage/report/ReportViewModel.kt
  • app/src/main/java/org/app/presentation/onboarding/signup/SignUpContract.kt
  • app/src/main/java/org/app/presentation/onboarding/signup/SignUpNicknameScreen.kt
  • app/src/main/java/org/app/presentation/onboarding/signup/SignUpTeamSelectionScreen.kt
  • app/src/main/java/org/app/presentation/onboarding/signup/SignUpViewModel.kt
  • app/src/main/java/org/app/presentation/pubdetail/PubDetailContract.kt
  • app/src/main/java/org/app/presentation/pubdetail/PubDetailScreen.kt
  • app/src/main/java/org/app/presentation/pubdetail/PubDetailViewModel.kt
  • app/src/main/java/org/app/presentation/pubdetail/component/PubInfoSection.kt
  • app/src/main/java/org/app/presentation/pubdetail/component/PubPhotoGallery.kt
  • app/src/main/java/org/app/presentation/pubdetail/component/TeamBadge.kt
  • app/src/main/java/org/app/presentation/pubdetail/model/PubDetail.kt
  • app/src/main/java/org/app/presentation/schedule/ScheduleContract.kt
  • app/src/main/java/org/app/presentation/schedule/ScheduleScreen.kt
  • app/src/main/java/org/app/presentation/schedule/ScheduleViewModel.kt
  • app/src/main/java/org/app/presentation/schedule/component/ScheduleCalendarDialog.kt
  • app/src/main/java/org/app/presentation/schedule/component/ScheduleGameItem.kt
  • app/src/main/java/org/app/presentation/schedule/component/ScheduleTeamChipBar.kt
💤 Files with no reviewable changes (3)
  • app/src/main/java/org/app/presentation/pubdetail/model/PubDetail.kt
  • app/src/main/java/org/app/presentation/pubdetail/component/PubPhotoGallery.kt
  • app/src/main/java/org/app/presentation/mypage/editprofile/EditProfileScreen.kt

Comment thread app/src/main/java/org/app/presentation/home/HomeViewModel.kt
Comment thread app/src/main/java/org/app/presentation/home/pubfilter/PubFilterContract.kt Outdated
Comment thread app/src/main/java/org/app/presentation/mypage/component/MyPageFavoriteSection.kt Outdated
noRippleClickable이 최소 터치 크기를 보장하지 않아, ModifierExt에
minTouchTarget()(=minimumInteractiveComponentSize) 신설. 배경/그림자보다
바깥(최외곽)에 배치해 시각 크기는 유지하고 터치 영역만 48dp로 확장.

작은 클릭 요소(탑바 아이콘·필터/카테고리 칩·캘린더 화살표·하트/연필/X/
탈퇴사유 행·개인정보처리방침 등)에 적용. 이미 48dp 이상인 버튼/카드/행은 제외.
foodCodes?.isNotEmpty()로 토글을 판정해, CHICKEN 등 다른 음식이 선택돼
있으면 칩을 눌러도 술 코드가 추가되지 않고 기존 선택이 전부 지워졌다.
DRINK_CODES 포함 여부로 판정하도록 수정해 술 코드만 정확히 토글한다.
DRINK_CODES는 FoodCode companion으로 단일 출처화(중복 정의 제거).
resolvedSections 게터는 어디서도 읽히지 않았고, team 섹션 해석은
PubFilterViewModel.loadTeams()가 sections에 직접 반영하고 Screen은
state.sections만 읽는다. 죽은 중복을 제거하고 관련 주석을 정정한다.
@oilbeaneda
oilbeaneda merged commit 4a8649e into develop Jul 21, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Refactor ♻️ 기능 변경 없이 코드 구조를 개선하여 가독성, 유지보수성, 성능을 향상

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Refactor] 코드 리팩토링

1 participant