Conversation
# Conflicts: # app/build.gradle.kts
Walkthrough이 PR은 QA 피드백을 반영하여 앱을 리팩토링합니다. GroupDone 화면과 관련 네비게이션을 제거하고, 카드 컴포넌트에 만료 상태 표시 기능을 추가하며, UI 컴포넌트 API를 개선하고 필터 시스템을 업데이트합니다. Changes
Sequence DiagramssequenceDiagram
participant User
participant GroupScreen
participant GroupNavigation
participant GroupRoom
Note over User,GroupRoom: Before: GroupDone 제거 전
User->>GroupScreen: Navigate (onNavigateToGroupDone)
GroupScreen->>GroupNavigation: onNavigateToGroupDone()
GroupNavigation->>GroupRoom: Navigate to GroupRoutes.Done
Note over User,GroupRoom: After: GroupDone 제거 후
User->>GroupScreen: Navigate (onNavigateToGroupDone removed)
Note over GroupScreen: Direct navigation<br/>to GroupRoom only
GroupScreen->>GroupNavigation: Room selection → isExpired check
sequenceDiagram
participant GroupNoteContent
participant BackHandler
participant OverlayState
User->>BackHandler: Back press
BackHandler->>GroupNoteContent: Trigger back handling
alt Comment sheet visible
GroupNoteContent->>OverlayState: Close comment sheet
GroupNoteContent->>OverlayState: Refresh posts
else Menu visible
GroupNoteContent->>OverlayState: Clear selected post
else Delete dialog visible
GroupNoteContent->>OverlayState: Close delete dialog
else Pin dialog visible
GroupNoteContent->>OverlayState: Close pin dialog
else None visible
GroupNoteContent->>GroupNoteContent: System back default
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes 변경 사항은 여러 파일을 포함하지만, 대부분 직관적인 추가/제거/파라미터 변경입니다. 다만 GroupDone 관련 기능 제거가 광범위하고 여러 계층에 걸쳐 있으며, 카드 컴포넌트와 네비게이션 로직의 상호연관된 변경으로 인해 검토 시간이 증가합니다. Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (2 warnings, 1 inconclusive)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
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/com/texthip/thip/ui/signin/screen/SignupGenreScreen.kt (1)
103-129: 스크롤 기능이 비활성화되어 PR 목표와 모순됩니다.Line 109의
userScrollEnabled = false로 인해 그리드가 스크롤되지 않습니다. 이는 PR 목표인 "회원가입 시 타이틀을 스크롤 가능하게 만들기"와 직접적으로 모순됩니다. 장르 옵션이 많을 경우 사용자가 모든 항목을 볼 수 없게 됩니다.다음 수정사항을 적용하세요:
LazyVerticalGrid( columns = GridCells.Adaptive(minSize = 152.dp), // 카드 최소 크기 modifier = Modifier .fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(16.dp), verticalArrangement = Arrangement.spacedBy(16.dp), - userScrollEnabled = false, + contentPadding = androidx.compose.foundation.layout.PaddingValues(bottom = 40.dp) ) { itemsIndexed(uiState.roleCards) { index, roleItem -> - val modifier = if (index == uiState.roleCards.lastIndex) { - Modifier.padding(bottom = 40.dp) - } else { - Modifier - } - RoleCard( - modifier = modifier, + modifier = Modifier, genre = roleItem.genre, role = roleItem.role, imageUrl = roleItem.imageUrl, roleColor = roleItem.roleColor, selected = uiState.selectedIndex == index, onClick = { onCardSelected(index) } ) } }변경 사항:
userScrollEnabled = false제거 (기본값 true로 스크롤 활성화)- 마지막 아이템 개별 패딩 대신
contentPadding을 사용하여 더 관용적인 방식으로 하단 여백 적용app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMyRoomFilterRow.kt (1)
50-50: Preview 데이터 불일치로 인한 크래시 발생 가능컴포넌트는 3개 요소의 배열(
selectedStates[0],[1],[2])을 기대하지만, Preview에서는 2개 요소만 제공합니다. 이로 인해ArrayIndexOutOfBoundsException이 발생합니다.다음과 같이 수정해주세요:
- var selectedStates by remember { mutableStateOf(booleanArrayOf(true, false)) } + var selectedStates by remember { mutableStateOf(booleanArrayOf(true, false, false)) }
🧹 Nitpick comments (6)
app/src/main/java/com/texthip/thip/ui/navigator/navigations/GroupNavigation.kt (1)
149-157: 만료된 방 상태 처리 로직이 정확하게 구현되었습니다.GroupRoom 네비게이션에
isExpired파라미터를 전달하여 만료된 방을 적절히 처리하도록 개선되었습니다.다만, 151번 라인의 비교 연산자 주위 괄호는 불필요합니다:
- val isExpired = (room.type == RoomType.EXPIRED.value) + val isExpired = room.type == RoomType.EXPIRED.valueapp/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt (1)
24-28: 네비게이션 애니메이션 비활성화 구현 확인모든 전환 애니메이션을
None으로 설정하여 네비게이션 애니메이션을 비활성화했습니다. 구현은 올바르게 되어 있습니다.참고: MainActivity.kt의 RootNavHost에서도 동일한 전환 설정이 사용되고 있습니다. 만약 앱 전체에서 일관된 전환 정책을 유지하려면, 이러한 설정을 공통 함수나 상수로 추출하여 중복을 제거하는 것을 고려해볼 수 있습니다.
app/src/main/java/com/texthip/thip/MainActivity.kt (1)
182-186: 루트 네비게이션 애니메이션 비활성화 구현 확인RootNavHost에서 모든 전환 애니메이션을
None으로 설정하여 네비게이션 애니메이션을 비활성화했습니다. 구현은 올바르게 되어 있습니다.MainNavHost.kt와 동일한 전환 설정이 사용되고 있어, 앱 전체에서 일관된 애니메이션 정책이 적용됩니다. 필요시 이러한 공통 설정을 별도의 확장 함수나 상수로 추출하여 유지보수성을 높일 수 있습니다.
예시:
// NavigationExtensions.kt fun NavGraphBuilder.noAnimationNavHost( startDestination: Any, builder: NavGraphBuilder.() -> Unit ) = NavHost( startDestination = startDestination, enterTransition = { EnterTransition.None }, exitTransition = { ExitTransition.None }, popEnterTransition = { EnterTransition.None }, popExitTransition = { ExitTransition.None }, builder = builder )app/src/main/java/com/texthip/thip/ui/feed/component/FeedSubscribelistBar.kt (1)
117-139: Preview 함수에서 followerNum 파라미터를 전달해주세요.Preview 함수들이
followerNum파라미터를 전달하지 않아 기본값 0이 사용됩니다. 이로 인해 프로필 이미지는 표시되지만 "0명이 띱하는 중" 텍스트가 보여 혼란을 줄 수 있습니다.다음과 같이 수정하여 Preview에서도 올바른 팔로워 수가 표시되도록 개선할 수 있습니다:
// Case 1: 팔로워 0 FeedSubscribeBarlist( + followerNum = 0, followerProfileImageUrls = emptyList(), onClick = {} ) // Case 2: 팔로워 3 FeedSubscribeBarlist( + followerNum = 3, followerProfileImageUrls = listOf( "https://example.com/image1.jpg", "https://example.com/image2.jpg", "https://example.com/image3.jpg" ), onClick = {} ) // Case 3: 팔로워 6 FeedSubscribeBarlist( + followerNum = 6, followerProfileImageUrls = List(6) { "https://example.com/profile$it.jpg" }, onClick = {} )app/src/main/java/com/texthip/thip/ui/group/myroom/screen/GroupMyScreen.kt (1)
178-178: 백엔드 "expired" 값 검증 완료 - 코드 일관성 개선 제안백엔드에서 정확히
"expired"문자열을 반환한다는 것이 확인되었습니다.RoomUtils의when문과RoomTypeenum 정의에서 모두"expired"값을 명시적으로 처리하고 있습니다.다만, 유사한 타입 확인 로직에서 패턴 불일치가 있습니다:
- 174번 줄: 유틸리티 함수 사용
RoomUtils.isRecruitingByType(room.type)- 178번 줄: 직접 비교
room.type == RoomType.EXPIRED.value유지보수성을 위해
RoomUtils에isExpiredByType()함수를 추가하거나, 두 경우 모두 통일된 패턴으로 변경하는 것을 권장합니다.app/src/main/java/com/texthip/thip/ui/group/myroom/mock/RoomType.kt (1)
4-4:ALL상수의 이름과 값이 의도적이지만 명확하지 않음
ALL("playingAndRecruiting")은 백엔드 API 계약과 일치하며 기능상 정상입니다. 하지만 상수 이름ALL은 모든 상태를 포함한다는 인상을 주는 반면, 실제 값은 EXPIRED 상태를 제외합니다. UI 로직(GroupMyScreen)에서 PLAYING과 RECRUITING이 함께 선택될 때만 ALL을 사용하는 것으로 보아 의도적인 설계입니다.명확성을 위해 다음 중 하나를 고려해주세요:
- 상수명을
PLAYING_AND_RECRUITING으로 변경- 주석 추가:
ALL // 모집중 및 진행중 상태만 포함 (완료 상태 제외)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (26)
app/build.gradle.kts(1 hunks)app/src/main/AndroidManifest.xml(1 hunks)app/src/main/java/com/texthip/thip/MainActivity.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoom.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/common/topappbar/LogoTopAppBar.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/feed/component/FeedSubscribelistBar.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/feed/screen/FeedMyScreen.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/feed/screen/FeedOthersScreen.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/group/done/mock/MyRoomCardData.kt(0 hunks)app/src/main/java/com/texthip/thip/ui/group/done/screen/GroupDoneScreen.kt(0 hunks)app/src/main/java/com/texthip/thip/ui/group/done/viewmodel/GroupDoneUiState.kt(0 hunks)app/src/main/java/com/texthip/thip/ui/group/done/viewmodel/GroupDoneViewModel.kt(0 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMyRoomFilterRow.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/mock/RoomType.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/screen/GroupMyScreen.kt(4 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/viewmodel/GroupMyUiState.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/group/note/screen/GroupNoteScreen.kt(3 hunks)app/src/main/java/com/texthip/thip/ui/group/screen/GroupScreen.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/navigator/extensions/GroupNavigationExtensions.kt(0 hunks)app/src/main/java/com/texthip/thip/ui/navigator/navigations/GroupNavigation.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/navigator/routes/GroupRoutes.kt(0 hunks)app/src/main/java/com/texthip/thip/ui/search/screen/SearchBookScreen.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/signin/screen/SignupGenreScreen.kt(3 hunks)app/src/main/res/drawable/ic_plusfriend.xml(1 hunks)app/src/main/res/values/strings.xml(1 hunks)
💤 Files with no reviewable changes (6)
- app/src/main/java/com/texthip/thip/ui/navigator/extensions/GroupNavigationExtensions.kt
- app/src/main/java/com/texthip/thip/ui/group/done/viewmodel/GroupDoneUiState.kt
- app/src/main/java/com/texthip/thip/ui/navigator/routes/GroupRoutes.kt
- app/src/main/java/com/texthip/thip/ui/group/done/viewmodel/GroupDoneViewModel.kt
- app/src/main/java/com/texthip/thip/ui/group/done/mock/MyRoomCardData.kt
- app/src/main/java/com/texthip/thip/ui/group/done/screen/GroupDoneScreen.kt
🧰 Additional context used
🧬 Code graph analysis (3)
app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMyRoomFilterRow.kt (1)
app/src/main/java/com/texthip/thip/ui/common/buttons/OptionChipButton.kt (1)
OptionChipButton(30-93)
app/src/main/java/com/texthip/thip/ui/group/note/screen/GroupNoteScreen.kt (1)
app/src/main/java/com/texthip/thip/ui/group/note/viewmodel/GroupNoteViewModel.kt (1)
onEvent(142-189)
app/src/main/java/com/texthip/thip/ui/signin/screen/SignupGenreScreen.kt (1)
app/src/main/java/com/texthip/thip/ui/mypage/component/RoleCard.kt (1)
RoleCard(34-91)
🔇 Additional comments (26)
app/src/main/res/drawable/ic_plusfriend.xml (2)
7-7: 경로 데이터 변경 사항 시각적 검증 권장 — 모든 path 요소의 pathData 좌표가 상당히 변경되었습니다. 아이콘이 의도대로 렌더링되는지 시각적 검증을 권장합니다.변경 전후 아이콘 모양을 비교하여 다음을 확인해주세요:
- 이전 버전과의 시각적 일관성
- 모든 경로가 올바르게 렌더링되는지 확인
- 선 두께(strokeWidth: 1.5)와 모서리 처리(strokeLineCap: round)가 의도대로 적용되는지 확인
Also applies to: 14-14, 21-21, 28-28
2-2: 아이콘 표준화 범위 명확화 필요 —ic_plusfriend.xml이 24dp로 변경되었지만, 50개 이상의 다른 아이콘들은 여전히 25dp 크기입니다.검증 결과, Kotlin 코드는
painterResource()를 통해 동적으로 리소스를 로드하므로 하드코딩된 크기 의존성은 없습니다. 다만 다음을 확인해주세요:
- 이 PR이 아이콘 표준화의 일부라면, 다른 아이콘들도 함께 24dp로 통일하는 것을 검토하세요
- 또는
ic_plusfriend만 격리된 업데이트인지 명확히 해주세요참고: 대부분의 25dp 아이콘들이
width=25dp, height=24dp로 비일관적입니다 (예:ic_done.xml,ic_rankup.xml,ic_plus.xml등).app/src/main/res/values/strings.xml (2)
240-240: 투표 제목 입력창 플레이스홀더 텍스트 개선"투표 내용을" 에서 "투표 제목을"로 변경된 것은 좋은 개선입니다. 이 필드가 투표의 제목/주제를 입력받는 필드이므로 더욱 명확하고 정확한 표현입니다. PR 목표인 "타이틀 입력 개선" 과 잘 맞아떨어집니다.
1-462:book_search_topappbar문자열 제거 확인 완료포괄적인 검색 결과,
book_search_topappbar문자열이 코드베이스 어디에서도 참조되고 있지 않습니다. 모든 파일 유형에 대한 검색, 리소스 참조 패턴 검색, 깃 히스토리 검색 모두 결과가 없으므로 이 문자열은 안전하게 제거되었습니다.app/src/main/java/com/texthip/thip/ui/common/topappbar/LogoTopAppBar.kt (2)
27-27: 좋은 API 개선입니다!왼쪽 아이콘을 선택적으로 만들어 컴포넌트의 유연성을 높였습니다. 기본값을
null로 설정하여 기존 호출 코드와의 호환성도 유지됩니다.
59-66: 널 안전성 구현이 올바르고 모든 호출 부분이 호환됩니다.코드베이스 검증 결과:
- FeedScreen.kt:
leftIcon값을 전달하여 올바르게 처리- GroupScreen.kt:
leftIcon미전달로 기본값(null) 사용,let블록에서 안전하게 처리됨- Preview: 양쪽 시나리오 모두 적절히 테스트
leftIcon?.let블록 구현은 아이콘이 존재할 때만 렌더링하고,onLeftClick콜백도 안전하게 제한됩니다. 모든 호출 부분이 이미 호환되므로 추가 수정이 필요하지 않습니다.app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt (1)
3-4: 필요한 import 추가 확인네비게이션 전환 설정을 위해 필요한 import가 올바르게 추가되었습니다.
app/src/main/java/com/texthip/thip/MainActivity.kt (1)
10-11: 필요한 import 추가 확인네비게이션 전환 설정을 위해 필요한 import가 올바르게 추가되었습니다.
app/src/main/java/com/texthip/thip/ui/feed/screen/FeedOthersScreen.kt (1)
136-136: 팔로워 수 표시 수정이 올바르게 적용되었습니다.
followerProfileImageUrls.size대신userInfo.followerCount를 명시적으로 전달하여 팔로워 수가 정확하게 표시되도록 수정되었습니다. 프로필 이미지 URL 목록은 최근 몇 개만 포함할 수 있지만, 실제 팔로워 수는 이보다 클 수 있으므로 올바른 수정입니다.app/src/main/java/com/texthip/thip/ui/feed/component/FeedSubscribelistBar.kt (1)
39-39: 팔로워 수 표시 로직이 올바르게 개선되었습니다.
followerNum파라미터를 추가하여 팔로워 수를 명시적으로 받도록 변경한 것은 올바른 수정입니다. 이전에는followerProfileImageUrls.size로 계산했는데, 이는 표시용 이미지 목록의 크기일 뿐 실제 팔로워 수와 다를 수 있었습니다.Also applies to: 63-64
app/src/main/java/com/texthip/thip/ui/feed/screen/FeedMyScreen.kt (1)
124-125: 팔로워 수 표시 수정이 일관되게 적용되었습니다.
FeedOthersScreen.kt와 동일하게followerNum파라미터를 추가하여 정확한 팔로워 수를 전달하고 있습니다. 두 화면에서 일관된 방식으로 수정되어 좋습니다.app/src/main/java/com/texthip/thip/ui/group/note/screen/GroupNoteScreen.kt (2)
3-3: LGTM!BackHandler 기능을 위한 필수 import가 올바르게 추가되었습니다.
230-244: 뒤로가기 처리 로직이 잘 구현되었습니다!BackHandler가 오버레이 상태를 올바른 우선순위로 처리하고 있으며, 상태 정리도 철저하게 이루어지고 있습니다. 댓글 시트를 닫을 때 RefreshPosts를 호출하여 데이터 일관성을 유지하는 것도 좋습니다 (기존 onDismiss 로직과 일치).
단, 댓글 시트 닫힐 때마다 RefreshPosts가 호출되어 네트워크 요청이 발생할 수 있습니다. 사용자가 빠르게 뒤로가기를 여러 번 누르는 경우를 고려하여, ViewModel의 loadPosts 함수가 적절히 디바운싱되거나 중복 요청을 처리하는지 확인해보시기 바랍니다.
app/src/main/java/com/texthip/thip/ui/signin/screen/SignupGenreScreen.kt (1)
81-86: 레이아웃 구조 개선이 적절합니다.
weight(1f)추가로 Column이 남은 공간을 채우도록 하여 스크롤 가능한 레이아웃 구조를 올바르게 구성했습니다.app/src/main/java/com/texthip/thip/ui/search/screen/SearchBookScreen.kt (2)
36-38: 임포트 재정렬 변경 사항 확인java.text 및 java.util 임포트가 다른 임포트 블록 뒤로 이동되었습니다. 이는 순수하게 구조적인 변경이며 기능에는 영향을 미치지 않습니다 (line 179에서 여전히 정상적으로 사용됨).
152-152: 변경 사항 검증 완료 - 리뷰 우려사항 없음
nav_search문자열 리소스는 두 곳에서 사용됩니다:
- SearchBookScreen.kt:152 - 도서 검색 화면 app bar 타이틀
- NavBarItems.kt:21 - 네비게이션 바 아이템 타이틀
이는 navigation-wide 일관성을 위한 의도적인 리소스 통합이며, "검색"이라는 문자열 값이 검색 화면의 타이틀로서 문맥상 적절합니다. 변경 사항은 타당하고 사용자 경험에 문제가 없습니다.
app/src/main/java/com/texthip/thip/ui/group/myroom/viewmodel/GroupMyUiState.kt (1)
8-8: 변경 사항 확인 완료기본값이
RoomType.ALL로 변경되어 전체 방 목록을 기본으로 표시하는 것이 적절합니다.app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoom.kt (2)
48-48: API 확장 적절함
isExpired파라미터 추가로 만료된 방의 표시를 제어할 수 있게 되었고, 기본값false로 하위 호환성이 유지됩니다.
165-180: 조건부 렌더링 로직 확인 완료만료된 방(
isExpired = true)일 때 종료일 블록을 표시하지 않는 것이 적절합니다. 코드가 명확하고 의도가 잘 드러납니다.app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMyRoomFilterRow.kt (1)
37-42: 세 번째 필터 버튼 추가 확인완료 상태 필터 버튼이 기존 두 버튼과 동일한 패턴으로 잘 구현되었습니다.
app/src/main/java/com/texthip/thip/ui/group/screen/GroupScreen.kt (3)
52-62: 네비게이션 단순화 확인
onNavigateToGroupDone파라미터가 제거되어 불필요한 네비게이션 콜백이 정리되었습니다. PR 전반의 리팩토링 의도와 일치합니다.
93-107: GroupContent 시그니처 업데이트 적절
onNavigateToGroupDone제거로 인해 함수 시그니처가 깔끔해졌습니다.
131-131: 패딩 미세 조정상단 패딩이 72.dp에서 75.dp로 3dp 증가했습니다. UI 정렬 개선으로 보입니다.
app/src/main/java/com/texthip/thip/ui/group/myroom/screen/GroupMyScreen.kt (3)
95-99: 필터 상태 매핑 로직 개선세 가지 필터 상태(진행중, 모집중, 완료)를 명확하게 처리하고, 선택되지 않은 경우 전체로 표시하는 것이 적절합니다.
127-157: 필터 토글 로직 검토각 필터 버튼 클릭 시 이미 선택된 상태면 ALL로 돌아가는 토글 동작이 구현되었습니다. 사용자 경험 측면에서 일관성 있는 동작입니다.
277-277: Preview 데이터 업데이트 확인Preview의 기본
currentRoomType이RoomType.ALL로 업데이트되어 새로운 필터 로직과 일치합니다.
| <uses-permission android:name="com.google.android.gms.permission.AD_ID" | ||
| tools:ignore="AdvertisingIdPolicy" /> |
There was a problem hiding this comment.
🧩 Analysis chain
광고 ID 권한 추가가 PR 목표와 일치하지 않습니다.
이 PR의 목표는 프로필 팔로워 수 수정, 가입 중 제목 스크롤 가능 설정, 미팅룸 사용성 개선입니다. 그러나 com.google.android.gms.permission.AD_ID 권한 추가는 이러한 목표와 관련이 없어 보입니다.
추가 고려사항:
tools:ignore="AdvertisingIdPolicy"의 사용은 린트 경고 억제로 보여, 비즈니스 목적 없이 권한이 추가되었을 가능성을 시사합니다.- 광고 ID는 개인정보보호 및 규정준수(GDPR/CCPA)와 관련된 민감한 권한입니다.
- 이 권한을 사용하는 코드가 이 PR에서 추가되었는지, 그리고 개인정보보호정책이 업데이트되었는지 확인이 필요합니다.
이 권한 추가의 목적을 설명해주시고, 다음을 확인하도록 요청드립니다:
- 이 권한이 실제로 PR의 변경사항과 관련이 있는지 여부
- 이 권한을 사용하는 코드가 추가되었는지 여부
- 앱의 개인정보보호정책이 광고 ID 사용에 대해 업데이트되었는지 여부
- 의도치 않은 변경이라면, 별도 PR로 분리하는 것을 권장합니다.
다음 스크립트를 실행하여 광고 ID 사용 여부를 확인할 수 있습니다:
🏁 Script executed:
#!/bin/bash
# Description: Search for Google Advertising ID usage in the codebase
# Search for AD_ID permission usage
rg -i "ad_id|advertising.*id|google.*ad" --type kotlin --type java -C 3Length of output: 0
🏁 Script executed:
#!/bin/bash
# Search for AdvertisingIdPolicy mentions
rg -i "advertisingidpolicy" -C 3
# Search for Google Play Services imports
rg "com\.google\.android\.gms" --type kotlin --type java -C 2
# Search for any references in manifest to services/activities that might use ad ID
rg "service|activity|receiver" app/src/main/AndroidManifest.xml -C 2Length of output: 3953
사용되지 않는 광고 ID 권한을 제거해야 합니다.
광고 ID 권한(com.google.android.gms.permission.AD_ID)이 추가되었으나 전체 코드베이스에서 어떤 곳에서도 사용되지 않고 있습니다. 검색 결과:
- 광고 ID 관련 코드: 0건
- 광고 ID API 임포트: 0건
- Google Play Services 의존성:
play-services-auth만 있음 (Google 로그인용) - 사용 중인 GMS 기능: 인증(GoogleSignIn), Firebase 메시징만 해당
tools:ignore="AdvertisingIdPolicy"는 사용되지 않는 권한에 대한 린트 경고를 억제하기 위한 것으로 보입니다.
조치:
- AndroidManifest.xml의 AD_ID 권한 선언 제거 (7-8줄)
tools:ignore속성도 함께 제거
이는 불필요한 개인정보보호 민감 권한을 앱에서 제거하는 것으로, 앱 스토어 규정 준수와 사용자 개인정보 보호 차원에서 권장됩니다.
🤖 Prompt for AI Agents
In app/src/main/AndroidManifest.xml around lines 7-8, remove the unused AD_ID
permission declaration and its tools:ignore attribute: delete the
<uses-permission android:name="com.google.android.gms.permission.AD_ID"
tools:ignore="AdvertisingIdPolicy" /> entry so the manifest no longer requests
the advertising ID permission; after removal, rebuild and verify no references
to AD_ID remain and lint no longer needs the suppressed AdvertisingIdPolicy
warning.
rbqks529
left a comment
There was a problem hiding this comment.
코드를 조금 더 문제 없도록 처리한거 같네요 수고하셨습니다! 머지하고 이어서 작업 진행할게요
There was a problem hiding this comment.
이건 화면 전환할 때 들어간 애니메이션 효과를 없앤겁니둣
➕ 이슈 링크
🔎 작업 내용
📸 스크린샷
😢 해결하지 못한 과제
[] TASK
📢 리뷰어들에게
Summary by CodeRabbit
릴리스 노트
새 기능
스타일
기타