Conversation
- `OnBoardingViewModel` 초기화 시 초대 코드를 자동으로 조회하도록 변경 - `OnBoardingSideEffect`에서 사용되지 않는 `CoupleConnection` 인터페이스 제거 - 특정 SideEffect 대신 공통 `showToast` 메서드를 사용하여 에러 메시지를 출력하도록 변경 - `CoupleConnectRoute`에서 수동으로 호출하던 `fetchMyInviteCode` 로직 제거 및 토스트 처리 로직 통합
- `NavigateToDDaySetting`을 `NavigateToNext`로 변경하여 목적지 추상화 및 범용성 개선 - `OnBoardingViewModel` 및 `ProfileScreen` 내 관련 참조 업데이트
- `OnBoardingSideEffect` 내에 `CopyInviteCode` 타입을 추가하여 UI 레이어에서 복사 로직을 처리하도록 변경 - `OnBoardingViewModel`에서 토스트 메시지를 직접 띄우는 대신 `CopyInviteCode` SideEffect를 방출하도록 수정 - `InviteCodeScreen`에서 클립보드 복사 및 Android 13(API 33) 이상 중복 알림 방지 로직 적용
- `TextFieldValue` 대신 `String`을 사용하도록 입력 로직 수정 - 커서의 깜빡임 애니메이션을 제거하고 `Cursor` 컴포넌트로 분리 - `Row` 내 아이템 간격 수정 (4.29.dp -> 4.dp) 및 코드 가독성 개선
📝 WalkthroughWalkthrough온보딩 모듈의 사이드이펙트 계층을 model에서 contract로 재구성하고, 다수의 개별 토스트/네비게이션 이펙트를 삭제한 뒤 통합된 OnBoardingSideEffect.ShowToast 구조를 도입했습니다. InviteCode 및 CoupleConnect 관련 UI는 스크롤 지원, TopGradientOverlay, 백 네비게이션 추가 등 레이아웃을 재구성했고 텍스트 필드와 커서 로직을 단순화했습니다. ViewModel에서 일부 공개 메서드가 비공개로 전환되고 초기화 시 invite 코드 패치가 수행되며, 여러 벡터 드로어블(ic_arrow_left, ic_invite) 추가와 img_couple_connect 삭제, 온보딩 문자열 리소스 이동 및 중복 추가가 포함됩니다. 일부 라우트/컴포저블 시그니처(예: CoupleConnectRoute)에 파라미터가 추가되었습니다. Estimated code review effort🎯 4 (Complex) | ⏱️ ~65 minutes 🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ 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: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
feature/onboarding/src/main/java/com/twix/onboarding/couple/CoupleConnectRoute.kt (1)
87-90:⚠️ Potential issue | 🟠 Major
초대장 보내기버튼이 현재 아무 동작도 하지 않습니다.Line 89에서
onClickSend에 빈 람다를 넘겨서 사용자가 메인 CTA를 눌러도 아무 일도 일어나지 않습니다. QA 반영 범위와 무관하게 초대 플로우가 끊기므로, 기존 동작으로 연결하거나 의도적으로 비활성화한 것이라면 버튼 상태/문구도 함께 맞춰 주세요. 예를 들어 같은 초대 코드 화면으로 보내는 의도였다면navigateToNext를 연결하는 형태가 됩니다.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@feature/onboarding/src/main/java/com/twix/onboarding/couple/CoupleConnectRoute.kt` around lines 87 - 90, The Invite button is currently a no-op because CoupleConnectScreen is passed an empty lambda for onClickSend; replace the empty lambda with the intended action (e.g., pass navigateToNext) or, if intentionally disabled, update the button state/label in CoupleConnectScreen to reflect disabled status; locate the CoupleConnectScreen call and change the onClickSend argument from {} to navigateToNext (or add a disabled flag/alternate text in CoupleConnectScreen and wire it accordingly).feature/onboarding/src/main/java/com/twix/onboarding/navigation/OnboardingNavGraph.kt (1)
77-79:⚠️ Potential issue | 🟠 MajorD-day 뒤로가기 네비게이션이 일관된 패턴을 따르지 않습니다
코드를 보면
CoupleConnectRoute(37행)와InviteCodeRoute(48행)에서는navigateToBack = navController::popBackStack을 사용하여 이전 화면으로 돌아가는데,DdayRoute만 77-79행에서navController.navigate(NavRoutes.ProfileRoute.route)를 호출합니다.이렇게 하면 ProfileRoute가 새로운 엔트리로 스택에 추가되어, 사용자가 여러 번 D-day 화면을 거쳐서 뒤로가기할 때 프로필이 여러 번 중복되어 쌓입니다. 이는 사용자가 예상하는 "이전 화면으로 돌아가기"라는 의도와 맞지 않습니다.
다른 라우트들과 동일하게
popBackStack()을 사용하여 스택의 이전 엔트리로 돌아가는 것이 바람직합니다.수정 제안
- navigateToBack = { - navController.navigate(NavRoutes.ProfileRoute.route) - }, + navigateToBack = navController::popBackStack,🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@feature/onboarding/src/main/java/com/twix/onboarding/navigation/OnboardingNavGraph.kt` around lines 77 - 79, The DdayRoute's navigateToBack currently calls navController.navigate(NavRoutes.ProfileRoute.route), which pushes a new ProfileRoute instead of returning to the previous entry; change it to use popBackStack so it matches CoupleConnectRoute and InviteCodeRoute patterns. Locate the DdayRoute navigateToBack assignment in OnboardingNavGraph.kt (the block that currently references NavRoutes.ProfileRoute.route) and replace that call with navController::popBackStack or an equivalent navController.popBackStack() invocation to pop the previous entry off the back stack.
🧹 Nitpick comments (7)
feature/login/src/main/java/com/twix/login/LoginScreen.kt (1)
15-15: 사용되지 않는 import를 제거해 주세요.
setValue는 이전에 동적 포지셔닝 로직에서mutableStateOf와 함께 사용되었으나, 해당 로직이 제거되면서 더 이상 사용되지 않습니다. 불필요한 import는 코드 가독성과 유지보수성을 저해할 수 있습니다.🧹 제거 제안
-import androidx.compose.runtime.setValue🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@feature/login/src/main/java/com/twix/login/LoginScreen.kt` at line 15, 파일 LoginScreen.kt에서 더 이상 사용되지 않는 import androidx.compose.runtime.setValue를 제거하세요; LoginScreen 컴포저블(또는 관련 함수)에서 mutableStateOf/setValue 호출이 모두 제거된 것을 확인한 뒤 해당 import 문을 삭제하여 불필요한 의존성을 제거하고 빌드/포맷을 다시 실행하세요.feature/onboarding/src/main/java/com/twix/onboarding/couple/component/RestoreCoupleBottomSheetContent.kt (1)
93-99: Preview 함수 가시성 통일을 권장합니다.다른 컴포넌트들의 Preview 함수가
private으로 선언된 것과 달리, 이 Preview는public입니다. 일관성을 위해private으로 변경하는 것을 고려해 주세요.♻️ 가시성 수정 제안
`@Preview`(showBackground = true) `@Composable` -fun RestoreCoupleBottomSheetContentPreview() { +private fun RestoreCoupleBottomSheetContentPreview() { TwixTheme { RestoreCoupleBottomSheetContent() } }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@feature/onboarding/src/main/java/com/twix/onboarding/couple/component/RestoreCoupleBottomSheetContent.kt` around lines 93 - 99, Preview 함수 RestoreCoupleBottomSheetContentPreview의 가시성이 다른 컴포넌트의 Preview들과 달리 public으로 선언되어 있으니, 함수 선언부에 private 키워드를 추가하여 가시성을 private으로 통일하세요; 대상 심볼은 RestoreCoupleBottomSheetContentPreview()이며 파일의 해당 `@Preview` 어노테이션이 붙은 함수 선언을 찾아 선언부를 수정하면 됩니다.feature/onboarding/src/main/java/com/twix/onboarding/couple/component/CoupleConnectTopbar.kt (1)
17-34: Preview Composable 추가를 권장합니다.코딩 가이드라인에 따르면 Preview Composable이 제공되어야 합니다. Preview를 추가하면 개발 및 디자인 검토 시 유용합니다.
♻️ Preview 추가 제안
`@Preview`(showBackground = true) `@Composable` private fun CoupleConnectTopbarPreview() { TwixTheme { CoupleConnectTopbar(onClickBack = {}) } }As per coding guidelines,
feature/**: Preview Composable이 제공되는가?🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@feature/onboarding/src/main/java/com/twix/onboarding/couple/component/CoupleConnectTopbar.kt` around lines 17 - 34, Add a Preview composable for CoupleConnectTopbar so it can be rendered in Android Studio previews: create a private preview function (e.g., CoupleConnectTopbarPreview) annotated with `@Preview`(showBackground = true) and `@Composable` that wraps CoupleConnectTopbar in the app theme (TwixTheme) and passes a no-op lambda for onClickBack ({}); place it in the same file (CoupleConnectTopbar.kt) near the CoupleConnectTopbar composable and keep the preview function private.core/design-system/src/main/res/drawable/ic_arrow_left.xml (1)
1-13: 다크 모드 지원을 고려해 주세요.현재
strokeColor="#171717"가 하드코딩되어 있어, 다크 모드에서 배경과 대비가 부족할 수 있습니다. 디자인 시스템의 테마 색상을 사용하거나,night리소스 폴더에 별도의 drawable을 추가하는 것을 권장합니다.다크 모드를 지원하지 않는 앱이라면 현재 구현도 괜찮습니다. 향후 다크 모드 지원 계획이 있는지 확인해 주세요.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@core/design-system/src/main/res/drawable/ic_arrow_left.xml` around lines 1 - 13, The hardcoded strokeColor on the vector drawable's path (the <path> element inside ic_arrow_left.xml) prevents proper dark-mode contrast; replace the literal "#171717" with a theme-aware color attribute (e.g., use a color attribute from your design system like ?attr/colorOnBackground or ?attr/colorControlNormal) so the icon adapts to light/dark themes, or provide an alternative drawable under a night resource qualifier with an appropriate strokeColor for dark backgrounds; update any references to ensure the themed attribute exists in your themes and fallback color resources are defined.feature/onboarding/src/main/java/com/twix/onboarding/couple/component/InvitationButton.kt (1)
23-44: 접근성 관점에서 터치 피드백을 검토해 주세요.
noRippleClickable을 사용하면 시각적 터치 피드백이 없어, 저시력 사용자나 스크린 리더 사용자에게 버튼이 눌렸는지 명확하지 않을 수 있습니다.디자인 의도에 따른 선택이라면 괜찮지만, 접근성(Accessibility) 가이드라인을 고려하여 다음 중 하나를 검토해 보시는 것을 권장드립니다:
- 커스텀 pressed state 시각 효과 추가
- 또는 표준
clickable사용으로 ripple 피드백 제공🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@feature/onboarding/src/main/java/com/twix/onboarding/couple/component/InvitationButton.kt` around lines 23 - 44, The InvitationButton currently uses Modifier.noRippleClickable which removes visual touch feedback; update InvitationButton to provide accessible pressed feedback by either replacing noRippleClickable with Modifier.clickable(onClick = onClick, indication = rememberRipple(), interactionSource = remember { MutableInteractionSource() }) to restore ripple feedback, or implement a custom pressed state using an InteractionSource on the same Modifier (capture pressed Interaction.Pressed and change background color/alpha or elevation in the composable) so users receive clear visual feedback when the button is pressed.feature/onboarding/src/main/java/com/twix/onboarding/contract/OnBoardingSideEffect.kt (1)
25-28:ShowToast.message는@StringRes로 계약을 고정해 두는 편이 안전합니다.지금은 단순
Int라서 문자열 리소스가 아닌 값도 컴파일되고, 각 Route에서getString(sideEffect.message)를 호출할 때 런타임 크래시로 이어질 수 있습니다. 계약 레벨에서@StringRes를 붙여 두면 잘못된 사용을 훨씬 빨리 막을 수 있습니다.예시 수정
+import androidx.annotation.StringRes import com.twix.designsystem.components.toast.model.ToastType import com.twix.ui.base.SideEffect @@ data class ShowToast( + `@StringRes` val message: Int, val type: ToastType, ) : OnBoardingSideEffect🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@feature/onboarding/src/main/java/com/twix/onboarding/contract/OnBoardingSideEffect.kt` around lines 25 - 28, Change the ShowToast contract to require a string resource by annotating the message parameter with `@StringRes` (e.g., data class ShowToast(`@StringRes` val message: Int, val type: ToastType) : OnBoardingSideEffect) and add the appropriate import for androidx.annotation.StringRes so callers cannot pass arbitrary Ints and accidental getString(...) runtime crashes are prevented; update any usages that currently pass non-resource ints to supply valid string resource IDs.feature/onboarding/src/main/java/com/twix/onboarding/invite/InviteCodeScreen.kt (1)
274-287: 람다 래퍼 제거로 간소화할 수 있습니다.
onClick = { onComplete() }는 추가 작업 없이 함수를 호출하는 것이므로, 불필요한 람다 래퍼를 제거하고 직접 함수 참조를 전달하면 코드가 더 간결해지고 매 recomposition마다 새 람다 객체 생성을 피할 수 있습니다.♻️ 제안된 수정
AppButton( text = stringResource(R.string.onboarding_profile_button_title), - onClick = { onComplete() }, + onClick = onComplete, backgroundColor = if (uiModel.isValid) GrayColor.C500 else GrayColor.C100,🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@feature/onboarding/src/main/java/com/twix/onboarding/invite/InviteCodeScreen.kt` around lines 274 - 287, The AppButton call uses an unnecessary lambda wrapper for the click handler: locate the AppButton invocation and replace onClick = { onComplete() } with a direct function reference onClick = onComplete (ensure the onComplete signature matches the expected click handler type), leaving the rest of the props (backgroundColor, textColor, enabled, modifier, uiModel) unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@feature/login/src/main/java/com/twix/login/navigation/LoginNavGraph.kt`:
- Line 41: The Login navigation currently calls
navController.navigate(destination) in LoginNavGraph which leaves the LoginGraph
on the back stack and allows returning to login from onboarding
(CoupleConnectRoute, InviteRoute); change the navigation to pop the LoginGraph
off the back stack by using navController.navigate(destination) with
popUpTo(graphRoute.route) { inclusive = true } (matching the ProfileRoute and
DdayRoute patterns) so the LoginGraph is removed when navigating to the
onboarding/main destinations.
In
`@feature/onboarding/src/main/java/com/twix/onboarding/couple/component/ConnectButton.kt`:
- Around line 54-64: The two AppText usages in ConnectButton (the AppText with
stringResource R.string.onboarding_couple_connect_direct_description and the
following AppText with R.string.onboarding_couple_direct_connect_button_title)
currently force fixed heights via Modifier.height(18.dp) and height(24.dp);
remove those height modifiers so the text can size to its content and replace
the spacing between them with an explicit Spacer or Column vertical spacing
(e.g., insert a Spacer(Modifier.height(...)) or use Column with
verticalArrangement/Arrangement.spacedBy) to create the needed gap while keeping
AppText flexible.
In
`@feature/onboarding/src/main/java/com/twix/onboarding/couple/component/CoupleConnectTopbar.kt`:
- Around line 25-32: The Image in CoupleConnectTopbar.kt uses contentDescription
= null which makes the back button inaccessible; replace the null with a
meaningful description (e.g., use string resources via
stringResource(R.string.back) or R.string.btn_back) so TalkBack can announce it,
and add the corresponding entry in strings.xml if it doesn't exist; ensure the
Image (the noRippleClickable onClickBack handler) keeps the same behavior while
providing the accessible label.
In
`@feature/onboarding/src/main/java/com/twix/onboarding/invite/component/InviteCodeTextField.kt`:
- Around line 32-52: The field keeps showing a focused visual because focus
isn't tracked; update InviteCodeTextField's BasicTextField to track actual focus
via onFocusChanged (store a Boolean state like hasFocus), pass that focus state
into CodeBox, and change CodeBox usage so the active visual is only when
hasFocus && inviteCode.length == index; ensure existing input filtering logic
(value=inviteCode, onValueChange) and repeat(InviteCode.INVITE_CODE_LENGTH)
remain unchanged while wiring the new hasFocus state to control cursor/border
rendering.
In
`@feature/onboarding/src/main/java/com/twix/onboarding/invite/InviteCodeScreen.kt`:
- Around line 329-334: The Preview in InviteCodeScreen is using a hardcoded
validation (isValid = textState.length == 6) that conflicts with the domain
constant InviteCode.INVITE_CODE_LENGTH (8); update the Preview's
InviteCodeUiModel creation (where InviteCodeUiModel is constructed with
partnerInviteCode = textState) to compute isValid using the domain constant
(e.g., isValid = textState.length == InviteCode.INVITE_CODE_LENGTH) so the
Preview mirrors InviteCodeTextField.kt’s validation and stays in sync with the
domain rule.
In `@feature/onboarding/src/main/java/com/twix/onboarding/OnBoardingViewModel.kt`:
- Around line 22-43: The fetchMyInviteCode() call in init should be removed
because init runs once for a shared ViewModel and can surface failure to users
before the invite screen is shown; instead make fetching lazy or explicit:
remove fetchMyInviteCode() from init, keep fetchMyInviteCode() as a public
method (or add fetchMyInviteCodeIfEmpty()) that checks inviteCode.myInviteCode
for emptiness before invoking launchResult, and wire the UI to call
fetchMyInviteCode() when the invite screen is entered or when a retry intent is
emitted; also keep the existing error handling (showToast) but ensure it only
runs when the UI triggers the fetch so the toast appears in the proper context.
---
Outside diff comments:
In
`@feature/onboarding/src/main/java/com/twix/onboarding/couple/CoupleConnectRoute.kt`:
- Around line 87-90: The Invite button is currently a no-op because
CoupleConnectScreen is passed an empty lambda for onClickSend; replace the empty
lambda with the intended action (e.g., pass navigateToNext) or, if intentionally
disabled, update the button state/label in CoupleConnectScreen to reflect
disabled status; locate the CoupleConnectScreen call and change the onClickSend
argument from {} to navigateToNext (or add a disabled flag/alternate text in
CoupleConnectScreen and wire it accordingly).
In
`@feature/onboarding/src/main/java/com/twix/onboarding/navigation/OnboardingNavGraph.kt`:
- Around line 77-79: The DdayRoute's navigateToBack currently calls
navController.navigate(NavRoutes.ProfileRoute.route), which pushes a new
ProfileRoute instead of returning to the previous entry; change it to use
popBackStack so it matches CoupleConnectRoute and InviteCodeRoute patterns.
Locate the DdayRoute navigateToBack assignment in OnboardingNavGraph.kt (the
block that currently references NavRoutes.ProfileRoute.route) and replace that
call with navController::popBackStack or an equivalent
navController.popBackStack() invocation to pop the previous entry off the back
stack.
---
Nitpick comments:
In `@core/design-system/src/main/res/drawable/ic_arrow_left.xml`:
- Around line 1-13: The hardcoded strokeColor on the vector drawable's path (the
<path> element inside ic_arrow_left.xml) prevents proper dark-mode contrast;
replace the literal "#171717" with a theme-aware color attribute (e.g., use a
color attribute from your design system like ?attr/colorOnBackground or
?attr/colorControlNormal) so the icon adapts to light/dark themes, or provide an
alternative drawable under a night resource qualifier with an appropriate
strokeColor for dark backgrounds; update any references to ensure the themed
attribute exists in your themes and fallback color resources are defined.
In `@feature/login/src/main/java/com/twix/login/LoginScreen.kt`:
- Line 15: 파일 LoginScreen.kt에서 더 이상 사용되지 않는 import
androidx.compose.runtime.setValue를 제거하세요; LoginScreen 컴포저블(또는 관련 함수)에서
mutableStateOf/setValue 호출이 모두 제거된 것을 확인한 뒤 해당 import 문을 삭제하여 불필요한 의존성을 제거하고
빌드/포맷을 다시 실행하세요.
In
`@feature/onboarding/src/main/java/com/twix/onboarding/contract/OnBoardingSideEffect.kt`:
- Around line 25-28: Change the ShowToast contract to require a string resource
by annotating the message parameter with `@StringRes` (e.g., data class
ShowToast(`@StringRes` val message: Int, val type: ToastType) :
OnBoardingSideEffect) and add the appropriate import for
androidx.annotation.StringRes so callers cannot pass arbitrary Ints and
accidental getString(...) runtime crashes are prevented; update any usages that
currently pass non-resource ints to supply valid string resource IDs.
In
`@feature/onboarding/src/main/java/com/twix/onboarding/couple/component/CoupleConnectTopbar.kt`:
- Around line 17-34: Add a Preview composable for CoupleConnectTopbar so it can
be rendered in Android Studio previews: create a private preview function (e.g.,
CoupleConnectTopbarPreview) annotated with `@Preview`(showBackground = true) and
`@Composable` that wraps CoupleConnectTopbar in the app theme (TwixTheme) and
passes a no-op lambda for onClickBack ({}); place it in the same file
(CoupleConnectTopbar.kt) near the CoupleConnectTopbar composable and keep the
preview function private.
In
`@feature/onboarding/src/main/java/com/twix/onboarding/couple/component/InvitationButton.kt`:
- Around line 23-44: The InvitationButton currently uses
Modifier.noRippleClickable which removes visual touch feedback; update
InvitationButton to provide accessible pressed feedback by either replacing
noRippleClickable with Modifier.clickable(onClick = onClick, indication =
rememberRipple(), interactionSource = remember { MutableInteractionSource() })
to restore ripple feedback, or implement a custom pressed state using an
InteractionSource on the same Modifier (capture pressed Interaction.Pressed and
change background color/alpha or elevation in the composable) so users receive
clear visual feedback when the button is pressed.
In
`@feature/onboarding/src/main/java/com/twix/onboarding/couple/component/RestoreCoupleBottomSheetContent.kt`:
- Around line 93-99: Preview 함수 RestoreCoupleBottomSheetContentPreview의 가시성이 다른
컴포넌트의 Preview들과 달리 public으로 선언되어 있으니, 함수 선언부에 private 키워드를 추가하여 가시성을 private으로
통일하세요; 대상 심볼은 RestoreCoupleBottomSheetContentPreview()이며 파일의 해당 `@Preview` 어노테이션이
붙은 함수 선언을 찾아 선언부를 수정하면 됩니다.
In
`@feature/onboarding/src/main/java/com/twix/onboarding/invite/InviteCodeScreen.kt`:
- Around line 274-287: The AppButton call uses an unnecessary lambda wrapper for
the click handler: locate the AppButton invocation and replace onClick = {
onComplete() } with a direct function reference onClick = onComplete (ensure the
onComplete signature matches the expected click handler type), leaving the rest
of the props (backgroundColor, textColor, enabled, modifier, uiModel) unchanged.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro
Run ID: 6233d593-f0ed-4ea2-a838-c84c4133869f
📒 Files selected for processing (27)
core/design-system/src/main/java/com/twix/designsystem/components/toast/ToastHost.ktcore/design-system/src/main/res/drawable/ic_arrow_left.xmlcore/design-system/src/main/res/drawable/ic_copy.xmlcore/design-system/src/main/res/drawable/ic_direct.xmlcore/design-system/src/main/res/drawable/ic_invite.xmlcore/design-system/src/main/res/values/strings.xmlfeature/login/src/main/java/com/twix/login/LoginScreen.ktfeature/login/src/main/java/com/twix/login/navigation/LoginNavGraph.ktfeature/onboarding/src/main/java/com/twix/onboarding/OnBoardingViewModel.ktfeature/onboarding/src/main/java/com/twix/onboarding/contract/OnBoardingIntent.ktfeature/onboarding/src/main/java/com/twix/onboarding/contract/OnBoardingSideEffect.ktfeature/onboarding/src/main/java/com/twix/onboarding/contract/OnBoardingUiState.ktfeature/onboarding/src/main/java/com/twix/onboarding/couple/CoupleConnectRoute.ktfeature/onboarding/src/main/java/com/twix/onboarding/couple/component/ConnectButton.ktfeature/onboarding/src/main/java/com/twix/onboarding/couple/component/CoupleConnectTopbar.ktfeature/onboarding/src/main/java/com/twix/onboarding/couple/component/InvitationButton.ktfeature/onboarding/src/main/java/com/twix/onboarding/couple/component/RestoreCoupleBottomSheetContent.ktfeature/onboarding/src/main/java/com/twix/onboarding/dday/DdayRoute.ktfeature/onboarding/src/main/java/com/twix/onboarding/dday/component/DDayField.ktfeature/onboarding/src/main/java/com/twix/onboarding/invite/InviteCodeScreen.ktfeature/onboarding/src/main/java/com/twix/onboarding/invite/InviteCodeUiModel.ktfeature/onboarding/src/main/java/com/twix/onboarding/invite/component/InviteCodeTextField.ktfeature/onboarding/src/main/java/com/twix/onboarding/model/OnBoardingSideEffect.ktfeature/onboarding/src/main/java/com/twix/onboarding/navigation/OnboardingNavGraph.ktfeature/onboarding/src/main/java/com/twix/onboarding/profile/ProfileScreen.ktfeature/onboarding/src/main/res/drawable/img_couple_connect.xmlfeature/onboarding/src/main/res/values/strings.xml
💤 Files with no reviewable changes (3)
- feature/onboarding/src/main/res/drawable/img_couple_connect.xml
- feature/onboarding/src/main/res/values/strings.xml
- feature/onboarding/src/main/java/com/twix/onboarding/model/OnBoardingSideEffect.kt
feature/onboarding/src/main/java/com/twix/onboarding/couple/component/ConnectButton.kt
Outdated
Show resolved
Hide resolved
feature/onboarding/src/main/java/com/twix/onboarding/couple/component/CoupleConnectTopbar.kt
Show resolved
Hide resolved
feature/onboarding/src/main/java/com/twix/onboarding/invite/component/InviteCodeTextField.kt
Show resolved
Hide resolved
feature/onboarding/src/main/java/com/twix/onboarding/invite/InviteCodeScreen.kt
Show resolved
Hide resolved
feature/onboarding/src/main/java/com/twix/onboarding/OnBoardingViewModel.kt
Show resolved
Hide resolved
- `verticalScroll`을 상위 레이아웃에서 내부 `Column`으로 이동하여 스크롤 동작 수정
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@feature/onboarding/src/main/java/com/twix/onboarding/couple/CoupleConnectRoute.kt`:
- Around line 124-133: The topbar (CoupleConnectTopbar) is currently inside the
vertically scrolling Column so it scrolls away; move CoupleConnectTopbar out of
the Column and make it a separate fixed child of the parent Box (e.g., place it
before/above the Column) while keeping the verticalScroll(scrollState) modifier
only on the Column content; ensure the Box child ordering/layout or use an
alignment modifier so the topbar remains pinned at the top and the Column
occupies the scrollable area below it.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro
Run ID: b3e12079-753c-402a-bfa7-c2ae286ad95f
📒 Files selected for processing (4)
feature/login/src/main/java/com/twix/login/LoginScreen.ktfeature/login/src/main/java/com/twix/login/component/LoginButton.ktfeature/onboarding/src/main/java/com/twix/onboarding/couple/CoupleConnectRoute.ktfeature/onboarding/src/main/java/com/twix/onboarding/couple/component/ConnectButton.kt
🚧 Files skipped from review as they are similar to previous changes (1)
- feature/onboarding/src/main/java/com/twix/onboarding/couple/component/ConnectButton.kt
이슈 번호
#123
작업내용
로그인 화면
커플 연결 화면
>아이콘 추가초대 코드 입력 화면
결과물
1. 로그인 화면 버튼 배치 수정
2. 커플 연결 화면 수정
3. 해지 커플 복구 바텀시트 디자인 수정
4. 초대 코드 입력 화면
리뷰어에게 추가로 요구하는 사항 (선택)