Skip to content

Conversation

@ikseong00
Copy link
Contributor

@ikseong00 ikseong00 commented Sep 29, 2025

🔗 관련 이슈

📙 작업 설명

  • 바텀 네비게이션 관련 Enum 및 컴포넌트 생성
  • String 타입의 route 대신 serial 한 data object / data class 로 마이그레이션
  • NavHost 경로 파라미터 대신 제네릭 타입으로 설정
  • Encode/Decode 로직 제거 -> NayType<> 으로 변경
  • MainNavigator 구현
  • capsuled NavGraph 구현

💬 추가 설명 or 리뷰 포인트 (선택)

  • route String 대신 object/class 를 사용해 휴먼에러를 줄일 수 있습니다.
  • 기존 코드에서 navController 라는 state 를 주고받았는데, 그 대신 navigate 이벤트를 주고받도록 변경해서, UDF 를 만족시켰습니다.
  • NavBackStackEntry.sharedViewModel를 통해서 뷰모델을 공유할 수 있는 확장함수를 구현했습니다.
  • MainNavigator 를 구현해서 navigate 함수를 파라미터로 넘길 때, 리컴포지션 시 불필요한 객체가 매번 생성되는 것을 방지했습니다.
// 아래는 중괄호로 감쌌기 때문에 매번 새로운 객체를 생성함. -> 리컴포지션마다 새 객체가 생성
navigateToHome = { navController.navigate(MainTabRoute.Home) }

// 리플렉션을 통해 새로운 객체 생성 대신 해당 객체/함수를 참조
navigateToHome = navigator::navigateToHome

// MainNavigator.kt
fun navigateToHome() {
    navController.navigate(MainTabRoute.Home)
}
  • 또한 MainNavigatorshouldShowBottomBar() 를 통해 원하는 조건에 따라 바텀바가 보일 수 있도록 구현했습니다. (현재는 메인탭에 속하는 경우만 보임)

  • 해당 내용 중 궁금한 내용이 있으면 말씀해주세요! 머지는 다음 회의 때 내용 말씀드린 후에 하겠습니다.

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 개선된 하단 탭 네비게이션 UI 추가
    • 선택된 탭에 대한 시각적 피드백 강화
  • UI/UX 개선

    • 홈, 통계, 설정 탭 아이콘 디자인 개선 (선택/미선택 상태 시각화)
    • 화면 전환 안정성 향상
  • 리팩토링

    • 내부 네비게이션 아키텍처 개선으로 더욱 견고한 앱 동작

This commit updates the NavController back stack entry for HomeViewModel from "main" to `MainTabRoute.Home` in multiple detail screens.

Changes were made in the following files:
- `MedicineDetail.kt`
- `StateHealthDetail.kt`
- `StateMentalDetail.kt`
- `MealDetail.kt`
- `SleepDetail.kt`
- `GlucoseDetail.kt`
@coderabbitai
Copy link

coderabbitai bot commented Sep 29, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

앱의 네비게이션 아키텍처를 NavController 기반에서 타입 안전 콜백 기반 시스템으로 마이그레이션했습니다. MainNavigator 추상화, Route 시드 인터페이스, MainTab 열거형, MainBottomBar 컴포넌트를 도입하고 모든 화면을 NavController 대신 콜백을 사용하도록 리팩토링했습니다.

Changes

Cohort / File(s) 요약
네비게이션 아키텍처 기반
app/src/main/java/com/konkuk/medicarecall/ui/navigation/MainNavigator.kt, app/src/main/java/com/konkuk/medicarecall/ui/navigation/NavGraph.kt, app/src/main/java/com/konkuk/medicarecall/ui/navigation/Route.kt, app/src/main/java/com/konkuk/medicarecall/ui/navigation/NavType.kt
MainNavigator 클래스 및 rememberMainNavigator 팩토리 추가, 타입 안전 라우팅을 위한 Route 시드 인터페이스 재구성, 복잡한 DTO를 위한 NavType 헬퍼 정의, 새로운 navigator 기반 NavGraph 구현
하단 바 컴포넌트
app/src/main/java/com/konkuk/medicarecall/ui/navigation/component/MainTab.kt, app/src/main/java/com/konkuk/medicarecall/ui/navigation/component/MainBottomBar.kt
MainTab 열거형 (HOME, WEEKLY_STATISTICS, SETTINGS) 정의, 애니메이션 포함 MainBottomBar 컴포넌트 추가
기능별 네비게이션 통합
app/src/main/java/com/konkuk/medicarecall/ui/feature/*/navigation/*Navigation.kt
HomeNavigation, AlarmNavigation, LoginNavigation, SettingNavigation, StatisticsNavigation 추가 - 각 기능의 네비게이션 헬퍼 및 NavGraphBuilder 확장
홈 화면 리팩토링
app/src/main/java/com/konkuk/medicarecall/ui/feature/home/screen/HomeScreen.kt, app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/*/screen/*.kt
NavController를 제거하고 navigateToMealDetail, navigateToMedicationDetail 등 명시적 콜백 추가, MealDetail, MedicineDetail, SleepDetail, StateHealthDetail, StateMentalDetail, GlucoseDetail 시그니처 업데이트
알람 화면 리팩토링
app/src/main/java/com/konkuk/medicarecall/ui/feature/alarm/screen/AlarmScreen.kt
NavHostController 파라미터 제거, onBack 콜백만 사용
로그인 흐름 리팩토링
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/*.kt, app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/*.kt
LoginStartScreen, LoginPhoneScreen, LoginVerificationScreen, LoginMyInfoScreen, LoginElderInfoScreen, LoginElderMedInfoScreen에서 NavController를 navigateToX 콜백으로 교체
결제 및 마무리 화면
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/PaymentScreen.kt, app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/LoginFinishScreen.kt, app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/NaverPayWebViewScreen.kt, app/src/main/java/com/konkuk/medicarecall/ui/feature/login/carecall/screen/CallTimeScreen.kt
콜백 기반 네비게이션으로 마이그레이션, PaymentScreen에 navigateToNaverPay, LoginFinishScreen에 navigateToMain, NaverPayWebViewScreen에 navigateToFinish 추가
설정 화면 리팩토링
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/*.kt
AnnouncementScreen, ElderInfoScreen(PersonalInfoScreen), HealthInfoScreen, MyDataSettingScreen, SettingSubscribeScreen, SettingsScreen에서 NavController 제거하고 타입 안전 콜백(navigateToElderDetail(EldersInfoResponseDto) 등) 추가
통계 및 공통 컴포넌트
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt, app/src/main/java/com/konkuk/medicarecall/ui/common/component/TopAppBar.kt, app/src/main/java/com/konkuk/medicarecall/ui/common/component/NameBar.kt
StatisticsScreen에 navigateToAlarm 추가, TopAppBar와 NameBar에서 navController를 onBack/navigateToAlarm 콜백으로 교체
삭제된 파일
app/src/main/java/com/konkuk/medicarecall/navigation/BottomNavItem.kt, app/src/main/java/com/konkuk/medicarecall/navigation/Route.kt (기존), app/src/main/java/com/konkuk/medicarecall/navigation/NavGraph.kt (기존)
기존 BottomNavItem 데이터 클래스, 구 Route 시드 클래스, 구 NavGraph 제거
공통 확장
app/src/main/java/com/konkuk/medicarecall/ui/common/extension/NavBackStackEntryExt.kt
sharedViewModel 확장 함수 추가
MainActivity 업데이트
app/src/main/java/com/konkuk/medicarecall/MainActivity.kt
rememberMainNavigator 사용, MainBottomBar 통합, 상단 패딩 간소화
DTO 업데이트
app/src/main/java/com/konkuk/medicarecall/data/dto/response/MyInfoResponseDto.kt
모든 생성자 파라미터에 기본값 추가
리소스 업데이트
app/src/main/res/drawable/ic_home_*.xml, app/src/main/res/drawable/ic_statistics_*.xml, app/src/main/res/drawable/ic_settings_*.xml
하단 바 탭 아이콘 리디자인 (선택/미선택 상태)

Sequence Diagram

sequenceDiagram
    participant User
    participant MainActivity
    participant MainNavigator
    participant NavGraph
    participant Screen

    User->>MainActivity: 앱 시작
    MainActivity->>MainNavigator: rememberMainNavigator() 생성
    MainNavigator->>NavGraph: navigator 주입
    NavGraph->>NavGraph: Route 기반 composable 등록
    
    User->>MainBottomBar: 탭 선택 (예: Home)
    MainBottomBar->>MainNavigator: navigateToMainTab(MainTab.HOME)
    MainNavigator->>NavGraph: MainTabRoute.Home로 이동
    NavGraph->>Screen: HomeScreen 렌더링
    
    Screen->>MainNavigator: navigateToMealDetail() 호출
    MainNavigator->>NavGraph: Route.MealDetail로 이동
    NavGraph->>Screen: MealDetail 렌더링 (onBack 콜백 제공)
    
    User->>Screen: 뒤로가기 버튼 클릭
    Screen->>MainNavigator: onBack() → popBackStack()
    MainNavigator->>NavGraph: 이전 화면으로 복귀
    NavGraph->>Screen: HomeScreen으로 돌아가기
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

추가 검토 필요 영역:

  • MainNavigator 구현: 모든 네비게이션 로직이 집중되어 있으며, 각 navigateToX 메서드가 올바른 navOptions를 적용하는지 확인 필요
  • 타입 안전 라우팅: NavType 구현에서 DTO 직렬화/역직렬화 로직이 모든 경로에서 일관되게 작동하는지 검증 필요
  • LoginNavigation 복잡도: 로그인 흐름이 여러 화면과 의존성(getBackStackLoginViewModel, getBackStackLoginElderViewModel)을 포함하고 있어 정확성 검토 필수
  • 화면 간 콜백 연결: 50개 이상의 파일에서 NavController → 콜백 전환이 일관되게 적용되었는지 확인 필요
  • 하단 바 가시성 관리: shouldShowBottomBar() 로직이 모든 라우트에서 올바르게 작동하는지 테스트 필요
  • 아이콘 리소스: 새 drawable 파일들이 모든 해상도에서 올바르게 렌더링되는지 확인

Possibly related PRs

Suggested reviewers

  • alswlekk
  • librawish808

Poem

🧭 타입 안전한 길을 찾아 navigate 🗺️
NavController를 콜백으로 바꾼 여정,
MainNavigator가 모든 길을 인도하고 ✨
화면 간 안전한 통로가 열렸네,
네비게이션 구조, 아름답게 재탄생! 🎉

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Out of Scope Changes Check ⚠️ Warning Nav 리팩토링 외에도 MyInfoResponseDto 기본값 추가 및 MyDataViewModel 오류 처리 변경 등 내비게이션 기능과 직접 연관 없는 DTO 및 ViewModel 수정이 포함되어 있어 링크된 이슈의 범위를 벗어난 변경이 확인됩니다. DTO 기본값 변경과 ViewModel 로직 수정을 별도의 PR로 분리하거나 본 PR에서 제거하여 내비게이션 관련 변경만 포함되도록 정리하시기를 권장합니다.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed PR 제목이 네비게이션 관련 UI 및 로직 변경을 명확히 언급하고 있어 주요 변경 사항을 잘 요약하지만, 이슈 번호와 “(No Merge)” 표기 등 불필요한 노이즈가 포함되어 있어 더 간결하게 다듬을 수 있습니다.
Linked Issues Check ✅ Passed PR에서 MainBottomBar 컴포넌트와 AnimatedVisibility 기반 애니메이션으로 메인 네비게이션 바 UI를 구현하고, Route 타입 안전 내비게이션, NavType, MainNavigator 등을 통해 Type Safe Navigation 마이그레이션 요구 사항을 충족하고 있어 #113과 #114의 코딩 요구사항을 모두 만족합니다.

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e0600fe and fd6b4e6.

📒 Files selected for processing (23)
  • app/src/main/java/com/konkuk/medicarecall/MainActivity.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/common/component/NameBar.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/common/component/TopAppBar.kt (2 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/home/navigation/HomeNavigation.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/home/screen/HomeScreen.kt (18 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/glucoselevel/screen/GlucoseDetail.kt (7 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/meal/screen/MealDetail.kt (8 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/medicine/screen/MedicineDetail.kt (5 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/sleep/screen/SleepDetail.kt (5 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/statehealth/screen/StateHealthDetail.kt (5 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/statemental/screen/StateMentalDetail.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/carecall/screen/CallTimeScreen.kt (2 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/navigation/LoginNavigation.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/LoginFinishScreen.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/NaverPayWebViewScreen.kt (20 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/PaymentScreen.kt (2 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/LoginElderInfoScreen.kt (5 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/LoginElderMedInfoScreen.kt (4 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/navigation/SettingNavigation.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/ElderDetailScreen.kt (11 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/MyDataSettingScreen.kt (2 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/navigation/NavGraph.kt (1 hunks)

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 and usage tips.

@ikseong00 ikseong00 changed the title [Feat] 네비게이션 UI, 로직 수정 #113 #114 [NO MERGE] [Feat] 네비게이션 UI, 로직 수정 #113 #114 (No Merge) Sep 29, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 8

Caution

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

⚠️ Outside diff range comments (1)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginVerificationScreen.kt (1)

91-104: Line 94의 navigateToUserInfo() 호출을 제거해야 합니다.

두 번째 LaunchedEffect는 기존 사용자의 네비게이션을 처리하는데, Line 94에서 모든 destination에 대해 무조건 navigateToUserInfo()를 먼저 호출하고 있어요. 이렇게 되면 GoToHome 케이스일 때도 UserInfo → Home 순서로 이동하게 되는데, 이건 명백히 잘못된 플로우입니다.

실제로 Line 93의 주석에서도 "기존 사용자는 바로 회원정보 입력 화면으로 이동하지 않고 다른 처리가 필요할 수 있음"이라고 명시되어 있고, LoginStartScreen에서도 navigateToUserInfo() 없이 when 분기만 처리하는 패턴을 사용하고 있어요.

새 사용자는 첫 번째 LaunchedEffect(line 63)에서 이미 navigateToUserInfo()를 호출하므로, 두 번째 LaunchedEffect에서는 Line 94를 제거하고 when 분기만 남겨두면 됩니다.

🧹 Nitpick comments (26)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (2)

97-101: 코드 포맷팅 개선 제안

97-101번 줄의 getStateFlow 호출에서 false, 파라미터가 별도 줄에 있어 가독성이 다소 떨어집니다.

다음과 같이 한 줄로 정리하는 것을 고려해보세요:

 val savedStateHandle = navController.currentBackStackEntry?.savedStateHandle
-val medsChanged by (savedStateHandle?.getStateFlow("medsChanged", false) ?: MutableStateFlow(
-    false,
-))
+val medsChanged by (savedStateHandle?.getStateFlow("medsChanged", false) ?: MutableStateFlow(false))
     .collectAsState()

313-323: Preview 함수에 navigateToAlarm 명시 제안

Preview 함수들에서 navigateToAlarm 파라미터를 명시적으로 전달하지 않고 있습니다. 기본값 빈 람다가 사용되므로 동작에는 문제없지만, 명시적으로 전달하면 더 명확합니다.

 StatisticsScreenLayout(
     uiState = dummyUiState,
     elderNameList = listOf("김옥자", "박막례"),
+    navigateToAlarm = {},
     currentWeek = Pair(LocalDate.now(), LocalDate.now().plusDays(6)),
     isLatestWeek = false,
     isEarliestWeek = false,
     onPreviousWeek = {},
     onNextWeek = {},
     onDropdownItemSelected = {},
     currentElderName = "김옥자",
 )

동일한 변경을 334-346번 줄의 두 번째 preview에도 적용하세요.

app/src/main/java/com/konkuk/medicarecall/ui/common/extension/NavBackStackEntryExt.kt (1)

12-12: 참고 링크의 유효성을 확인하거나 설명 추가를 고려하세요.

YouTube 링크로 구현 참고자료를 제공하는 것은 좋지만, 링크가 깨질 수 있습니다. 핵심 개념을 간단히 주석으로 설명하거나 링크의 유효성을 확인해주세요.

app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/NaverPayScreen.kt (1)

154-220: JavaScript 인터페이스 로직이 중복되고 있습니다.

메인 WebView와 팝업 WebView에서 onPaymentComplete 처리 로직이 거의 동일하게 반복되고 있습니다. JSON 파싱, PaymentResult 생성, 성공/실패 처리 로직이 두 곳에 중복으로 존재하네요.

공통 로직을 별도 함수로 추출하는 것을 고려해보세요:

private fun createPaymentBridge(
    navigateToFinish: () -> Unit,
    onBack: () -> Unit,
    navigated: MutableState<Boolean>
) = object {
    @JavascriptInterface
    fun onPaymentComplete(json: String) {
        Log.d("NaverPayScreen", "Payment complete callback: $json")
        Handler(Looper.getMainLooper()).post {
            try {
                val o = JSONObject(json)
                val result = PaymentResult(
                    success = o.optBoolean("success", false),
                    orderCode = o.optString("orderCode", null),
                    paymentId = o.optString("paymentId", null),
                    resultCode = o.optString("resultCode", null),
                    message = o.optString("message", null),
                )
                Log.d("NaverPayScreen", "Payment result: $result")
                if (result.success && !navigated.value) {
                    navigated.value = true
                    navigateToFinish()
                } else if (!result.success) {
                    Log.w("NaverPayScreen", "Payment failed: ${result.message ?: "unknown"}")
                    onBack()
                }
            } catch (e: Exception) {
                Log.e("NaverPayScreen", "Parse error: ${e.message}")
            }
        }
    }

    @JavascriptInterface
    fun closePage() {
        // popup-specific implementation if needed
    }
}

이렇게 하면 메인 WebView와 팝업 WebView에서 동일한 브릿지 객체를 재사용할 수 있습니다.

Also applies to: 474-509

app/src/main/java/com/konkuk/medicarecall/ui/navigation/NavType.kt (2)

13-101: NavType 구현에 상당한 코드 중복이 보입니다.

5개의 DTO 타입에 대해 거의 동일한 NavType 구현이 반복되고 있네요. 제네릭 함수나 인라인 함수를 활용하면 중복을 크게 줄일 수 있을 것 같습니다.

다음과 같이 제네릭 팩토리 함수를 사용하는 것을 고려해보세요:

import kotlinx.serialization.KSerializer

inline fun <reified T : Any> createNavType(
    serializer: KSerializer<T>
): NavType<T> = object : NavType<T>(isNullableAllowed = false) {
    override fun get(bundle: Bundle, key: String): T? {
        return bundle.getString(key)?.let { Json.decodeFromString(serializer, it) }
    }

    override fun parseValue(value: String): T {
        return Json.decodeFromString(serializer, value)
    }

    override fun serializeAsValue(value: T): String {
        return Json.encodeToString(serializer, value)
    }

    override fun put(bundle: Bundle, key: String, value: T) {
        bundle.putString(key, Json.encodeToString(serializer, value))
    }
}

// Usage
val MyInfoResponseDtoType = createNavType(MyInfoResponseDto.serializer())
val EldersInfoResponseDtoType = createNavType(EldersInfoResponseDto.serializer())
// ... and so on

이렇게 하면 보일러플레이트를 대폭 줄이고, 명시적인 serializer를 사용하여 타입 안정성도 개선할 수 있습니다.


13-101: 직렬화 시 명시적 serializer 사용을 고려해보세요.

현재 Json.decodeFromString(value) 형태로 암시적 serializer를 사용하고 있는데, Kotlin Serialization 라이브러리에서는 명시적으로 Json.decodeFromString(Dto.serializer(), value) 형태를 권장합니다. 이렇게 하면 타입 안정성이 향상되고, 컴파일 타임에 serializer 존재 여부를 확인할 수 있습니다.

app/src/main/java/com/konkuk/medicarecall/ui/common/component/TopAppBar.kt (2)

21-22: 사용하지 않는 import를 정리해 주세요.

NavHostController와 rememberNavController import가 더 이상 사용되지 않으므로 제거하는 게 좋겠습니다.

-import androidx.navigation.NavHostController
-import androidx.navigation.compose.rememberNavController

21-22: 사용하지 않는 import 정리 추천

NavHostControllerrememberNavController import가 더 이상 사용되지 않으니 제거해도 좋을 것 같습니다.

-import androidx.navigation.NavHostController
-import androidx.navigation.compose.rememberNavController
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginMyInfoScreen.kt (1)

141-153: 생년월일 입력 처리가 잘 구현되어 있습니다.

DateOfBirthVisualTransformation을 사용해서 YYYY / MM / DD 포맷을 표시하고, maxLength=8로 입력 제한을 두었네요. 깔끔합니다.

152번 라인의 불필요한 빈 줄을 제거하면 코드가 더 깔끔해질 것 같아요:

         visualTransformation = DateOfBirthVisualTransformation(),
         maxLength = 8,
-
-        )
+    )
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/ElderInfoScreen.kt (2)

93-94: 주석 처리된 코드를 제거하세요

이전 네비게이션 패턴의 예시 코드가 주석으로 남아있습니다. 마이그레이션이 완료되었다면 제거하는 것이 좋겠습니다.

-//            PersonalInfoCard("김옥자", onClick = {navController.navigate(Route.PersonalDetail.route)})
-//            PersonalInfoCard("박막례", onClick = {navController.navigate(Route.PersonalDetail.route)})

53-58: 프로덕션 환경에서는 디버그 로그 제거 고려하세요

여러 개의 디버그 로그가 남아있습니다. 개발 중에는 유용하지만, 릴리스 빌드에서는 제거하거나 적절한 로그 레벨로 조정하는 것을 권장합니다.

app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/MyDataSettingScreen.kt (1)

200-205: 전화번호 포맷팅 함수를 유틸리티로 추출하는 것을 고려하세요

formatPhoneNumber 함수가 파일 하단에 정의되어 있습니다. 다른 화면에서도 재사용 가능성이 있다면 공통 유틸리티로 분리하는 것이 좋겠습니다. LoginPhoneScreen.kt에서도 PhoneNumberVisualTransformation을 사용하는 것을 보면, 전화번호 관련 유틸리티를 한 곳에 모으면 유지보수에 도움이 될 것 같습니다.

app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/glucoselevel/screen/GlucoseDetail.kt (1)

51-51: 사용하지 않는 import를 제거해주세요.

MainTabRoute를 import 하고 있지만 파일 내에서 사용되지 않습니다.

-import com.konkuk.medicarecall.ui.navigation.MainTabRoute
app/src/main/java/com/konkuk/medicarecall/MainActivity.kt (1)

44-48: 코드 포맷팅을 정리해주세요.

빈 줄이 불필요하게 추가되어 있습니다.

             window.insetsController?.setSystemBarsAppearance(
                 WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS,
                 WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS,
-
             )
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/medicine/screen/MedicineDetail.kt (1)

39-39: 사용하지 않는 import를 제거해주세요.

MainTabRoute를 import 하고 있지만 파일 내에서 사용되지 않습니다.

-import com.konkuk.medicarecall.ui.navigation.MainTabRoute
app/src/main/java/com/konkuk/medicarecall/ui/navigation/NavGraph.kt (5)

106-123: 홈 내비게이션을 homeNavGraph로 위임한 점은 좋지만, 주석 처리된 코드는 정리하는 게 좋겠어요.

navigator::navigateToMealDetail 같은 메서드 참조를 사용해서 리컴포지션마다 람다 재생성을 피하는 패턴은 훌륭합니다. 다만 106~115번 라인의 주석 처리된 코드는 마이그레이션이 완료되면 제거하는 것을 추천합니다.

-        // 홈
-//        composable<MainTabRoute.Home> { backStackEntry ->
-//            HomeScreen(
-//                navigateToMealDetail = { navController.navigate(Route.MealDetail) },
-//                navigateToMedicationDetail = { navController.navigate(Route.MedicationDetail) },
-//                navigateToSleepDetail = { navController.navigate(Route.SleepDetail) },
-//                navigateToHealthAnalysisDetail = { navController.navigate(Route.HealthAnalysisDetail) },
-//                navigateToMentalAnalysisDetail = { navController.navigate(Route.MentalAnalysisDetail) },
-//                navigateToGlucoseDetail = { navController.navigate(Route.GlucoseDetail) },
-//            )
-//        }
         homeNavGraph(

185-190: 주석 처리된 statisticsNavGraph 코드도 정리 예정이신가요?

마이그레이션이 완료되면 이 주석 코드도 제거하는 것을 추천합니다.


193-356: 설정 관련 라우트들이 일관되게 구현되었습니다.

Type-safe navigation을 활용해 복잡한 객체(EldersInfoResponseDto, MyInfoResponseDto 등)를 typeMap을 통해 전달하는 방식이 깔끔합니다. 로그아웃 후 navigateToLoginAfterLogout에서 Home을 포함해 백스택을 정리하는 로직도 정확합니다.

다만 358~373번 라인의 주석 처리된 settingNavGraph 코드는 정리하는 것을 추천합니다.


384-502: 로그인 플로우가 잘 구성되어 있습니다.

각 로그인 화면이 loginViewModelloginElderViewModel을 적절히 공유하며, 백스택 관리(popUpTo)도 정확하게 이루어지고 있습니다. LoginFinish에서 navigateToMainAfterLogin()을 호출해 로그인 스택을 정리하는 부분도 의도대로 작동할 것 같습니다.

다만 504~526번 라인의 주석 처리된 loginNavGraph 코드는 마이그레이션 완료 후 제거하는 것을 추천합니다.


173-183: 백스택 기반 ViewModel 공유는 괜찮고, navController 사용도 정당해요.

navController.getBackStackEntry(MainTabRoute.Home)으로 HomeViewModel을 공유하는 패턴은 탭 구조상 Home이 항상 백스택에 있을 거라 문제없어요. 딥링크 같은 극단적 케이스가 없다면 안전합니다.

StatisticsScreen에 전달된 navControllersavedStateHandle을 통해 화면 간 상태 통신(medsChanged 플래그 관찰)에 사용되고 있어서, 콜백 패턴과 충돌하지 않아요.

다만, navigateToAlarm 파라미터는 선언만 되고 실제로는 사용되지 않네요. 필요 없다면 제거하는 게 깔끔할 것 같습니다.

// 사용되지 않는 파라미터
navigateToAlarm: () -> Unit = {},  // StatisticsScreen 본문과 Layout 둘 다 미사용
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/sleep/screen/SleepDetail.kt (1)

43-79: onBack 콜백 기반으로 잘 전환되었습니다.

NavHostController 의존성을 제거하고 HomeViewModel도 직접 hiltViewModel()로 가져오는 방식이 간결합니다. 다만 36번 라인의 import com.konkuk.medicarecall.ui.navigation.MainTabRoute는 사용되지 않는 것 같으니 정리하면 좋겠습니다.

-import com.konkuk.medicarecall.ui.navigation.MainTabRoute
app/src/main/java/com/konkuk/medicarecall/ui/navigation/component/MainTab.kt (1)

39-49: @composable 어노테이션이 불필요해 보입니다.

find()contains() 함수는 단순히 컬렉션 필터링/검색 연산만 수행하고 UI를 방출하지 않는데, @Composable로 마킹되어 있습니다. 이로 인해:

  • 호출하는 쪽이 반드시 @Composable 컨텍스트여야 함
  • 불필요한 리컴포지션 추적 오버헤드 발생 가능
  • 사용 가능한 위치가 제한됨

일반 함수로 변경하는 것을 고려해보세요.

     companion object {
-        @Composable
-        fun find(predicate: @Composable (MainTabRoute) -> Boolean): MainTab? {
+        fun find(predicate: (MainTabRoute) -> Boolean): MainTab? {
             return MainTab.entries.find { predicate(it.route) }
         }

-        @Composable
-        fun contains(predicate: @Composable (Route) -> Boolean): Boolean {
+        fun contains(predicate: (Route) -> Boolean): Boolean {
             return MainTab.entries.map { it.route }.any { predicate(it) }
         }
     }
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/statemental/screen/StateMentalDetail.kt (1)

74-74: 빈 람다가 의도된 것인지 확인 필요

onMonthClick에 빈 구현과 주석이 있는데, 이게 향후 구현 예정인 TODO인지 확인해보세요. 만약 추후 구현할 기능이라면 TODO 주석으로 명시하면 더 명확할 것 같습니다.

혹시 이 기능 구현을 추적할 이슈를 생성하고 싶으시면 도움드릴 수 있습니다!

app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/navigation/SettingNavigation.kt (1)

87-102: 파라미터 개수가 많아 함수 사용성이 떨어질 수 있습니다.

14개의 콜백 파라미터는 상당히 많은 편입니다. 이 함수를 호출하는 쪽에서 람다를 일일이 전달하기 번거롭고, 순서를 헷갈릴 수도 있습니다.

파라미터를 묶는 방식을 고려해보세요:

data class SettingNavigationCallbacks(
    val popBackStack: () -> Unit,
    val navigateToElderPersonalInfo: () -> Unit,
    val navigateToElderPersonalDetail: (EldersInfoResponseDto) -> Unit,
    // ... 나머지 콜백들
)

fun NavGraphBuilder.settingNavGraph(
    callbacks: SettingNavigationCallbacks,
) {
    // 내부에서 callbacks.popBackStack(), callbacks.navigateToX() 형태로 사용
}

또는 더 나아가서, 이런 콜백들을 제공하는 인터페이스를 만들어 의존성을 주입하는 방식도 고려할 수 있습니다. 지금 당장 급하게 고칠 필요는 없지만, 나중에 유지보수 시 고려해보면 좋을 것 같습니다.

app/src/main/java/com/konkuk/medicarecall/ui/feature/home/screen/HomeScreen.kt (1)

386-415: 콜백 연결이 올바르게 이루어졌습니다.

각 컨테이너 컴포넌트에 적절한 네비게이션 콜백이 전달되고 있습니다.

다만, PR 설명에서 언급한 것처럼 리컴포지션 시 람다 객체 생성을 피하기 위해 함수 참조를 직접 전달하는 방식을 고려해볼 수 있습니다:

// 현재 방식 (람다 생성)
onClick = { navigateToMealDetail() }

// 최적화된 방식 (함수 참조)
onClick = navigateToMealDetail

파라미터가 없는 콜백이므로 바로 함수 참조로 전달 가능합니다. 성능이 크리티컬한 부분이 아니라면 현재 방식도 괜찮지만, 일관성 있게 최적화를 적용하고 싶다면 변경을 고려해보세요.

app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/HealthInfoScreen.kt (1)

85-92: 복잡한 인코딩 로직을 제거하고 직관적인 타입 안전 내비게이션으로 개선

이전에는 DTO를 JSON으로 직렬화하고 URL 인코딩하는 복잡한 과정이 필요했으나, 이제는 객체를 직접 전달하여 코드가 훨씬 간결하고 타입 안전해졌습니다.

참고로, 93-94번 줄의 주석 처리된 예제 코드는 제거해도 좋을 것 같습니다.

             }
-//            PersonalInfoCard("김옥자",  onClick = {navController.navigate(Route.HealthDetail.route)})
-//            PersonalInfoCard("박막례",  onClick = {navController.navigate(Route.HealthDetail.route)})
             Spacer(modifier = Modifier.height(20.dp))
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 84117bf and 14b28c0.

📒 Files selected for processing (53)
  • app/src/main/java/com/konkuk/medicarecall/MainActivity.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/data/dto/response/MyInfoResponseDto.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/navigation/BottomNavItem.kt (0 hunks)
  • app/src/main/java/com/konkuk/medicarecall/navigation/NavGraph.kt (0 hunks)
  • app/src/main/java/com/konkuk/medicarecall/navigation/Route.kt (0 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/common/component/NameBar.kt (5 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/common/component/TopAppBar.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/common/extension/NavBackStackEntryExt.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/alarm/navigation/AlarmNavigation.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/alarm/screen/AlarmScreen.kt (2 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/home/navigation/HomeNavigation.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/home/screen/HomeScreen.kt (21 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/glucoselevel/screen/GlucoseDetail.kt (7 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/meal/screen/MealDetail.kt (8 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/medicine/screen/MedicineDetail.kt (5 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/navigation/HomeDetailNavGraph.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/sleep/screen/SleepDetail.kt (5 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/statehealth/screen/StateHealthDetail.kt (5 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/statemental/screen/StateMentalDetail.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/carecall/screen/SetCallScreen.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginMyInfoScreen.kt (13 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginPhoneScreen.kt (4 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginStartScreen.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginVerificationScreen.kt (7 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/navigation/LoginNavigation.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/FinishSplashScreen.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/NaverPayScreen.kt (20 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/PaymentScreen.kt (2 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/LoginElderInfoScreen.kt (6 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/LoginElderMedInfoScreen.kt (9 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/navigation/SettingNavigation.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/AnnouncementScreen.kt (4 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/ElderInfoScreen.kt (4 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/HealthInfoScreen.kt (4 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/MyDataSettingScreen.kt (7 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/SettingSubscribeScreen.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/SettingsScreen.kt (10 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/viewmodel/MyDataViewModel.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/splash/screen/SplashScreen.kt (2 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/navigation/StatisticsNavigation.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (15 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/navigation/MainNavigator.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/navigation/NavGraph.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/navigation/NavType.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/navigation/Route.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/navigation/component/MainBottomBar.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/navigation/component/MainTab.kt (1 hunks)
  • app/src/main/res/drawable/ic_home_selected.xml (1 hunks)
  • app/src/main/res/drawable/ic_home_unselected.xml (1 hunks)
  • app/src/main/res/drawable/ic_settings_selected.xml (1 hunks)
  • app/src/main/res/drawable/ic_settings_unselected.xml (1 hunks)
  • app/src/main/res/drawable/ic_statistics_selected.xml (1 hunks)
  • app/src/main/res/drawable/ic_statistics_unselected.xml (1 hunks)
💤 Files with no reviewable changes (3)
  • app/src/main/java/com/konkuk/medicarecall/navigation/BottomNavItem.kt
  • app/src/main/java/com/konkuk/medicarecall/navigation/Route.kt
  • app/src/main/java/com/konkuk/medicarecall/navigation/NavGraph.kt
🧰 Additional context used
🧬 Code graph analysis (27)
app/src/main/java/com/konkuk/medicarecall/ui/feature/alarm/navigation/AlarmNavigation.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/feature/alarm/screen/AlarmScreen.kt (1)
  • AlarmScreen (20-70)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/component/MainBottomBar.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/theme/Theme.kt (1)
  • MediCareCallTheme (38-60)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/LoginElderInfoScreen.kt (3)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/component/LoginBackButton.kt (1)
  • LoginBackButton (17-37)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/component/ElderInputForm.kt (1)
  • ElderInputForm (37-178)
app/src/main/java/com/konkuk/medicarecall/ui/common/component/DefaultSnackBar.kt (1)
  • DefaultSnackBar (17-37)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/HealthInfoScreen.kt (2)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/component/PersonalInfoCard.kt (1)
  • PersonalInfoCard (29-72)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/MainNavigator.kt (1)
  • navigateToHealthDetail (179-181)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/ElderInfoScreen.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/component/PersonalInfoCard.kt (1)
  • PersonalInfoCard (29-72)
app/src/main/java/com/konkuk/medicarecall/ui/feature/alarm/screen/AlarmScreen.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/feature/alarm/component/AlarmItem.kt (1)
  • AlarmItem (16-36)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginMyInfoScreen.kt (2)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/component/LoginBackButton.kt (1)
  • LoginBackButton (17-37)
app/src/main/java/com/konkuk/medicarecall/ui/common/component/DefaultTextField.kt (1)
  • DefaultTextField (18-64)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/common/component/NameBar.kt (1)
  • NameBar (27-77)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/meal/screen/MealDetail.kt (2)
app/src/main/java/com/konkuk/medicarecall/ui/common/component/TopAppBar.kt (1)
  • TopAppBar (26-76)
app/src/main/java/com/konkuk/medicarecall/ui/feature/calendar/DateSelector.kt (1)
  • DateSelector (24-70)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginVerificationScreen.kt (3)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/MainNavigator.kt (2)
  • navigateToUserInfo (207-209)
  • navigateToHome (138-140)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/component/LoginBackButton.kt (1)
  • LoginBackButton (17-37)
app/src/main/java/com/konkuk/medicarecall/ui/common/component/DefaultSnackBar.kt (1)
  • DefaultSnackBar (17-37)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/navigation/HomeDetailNavGraph.kt (6)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/meal/screen/MealDetail.kt (1)
  • MealDetail (37-70)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/medicine/screen/MedicineDetail.kt (1)
  • MedicineDetail (43-78)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/sleep/screen/SleepDetail.kt (1)
  • SleepDetail (41-79)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/statehealth/screen/StateHealthDetail.kt (1)
  • StateHealthDetail (43-91)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/statemental/screen/StateMentalDetail.kt (1)
  • StateMentalDetail (39-76)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/glucoselevel/screen/GlucoseDetail.kt (1)
  • GlucoseDetail (58-136)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/MyDataSettingScreen.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/MainNavigator.kt (2)
  • navigateToUserInfoSetting (211-213)
  • navigateToLoginAfterLogout (215-221)
app/src/main/java/com/konkuk/medicarecall/ui/feature/splash/screen/SplashScreen.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/MainNavigator.kt (1)
  • navigateToHome (138-140)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/NavGraph.kt (33)
app/src/main/java/com/konkuk/medicarecall/ui/feature/splash/screen/SplashScreen.kt (1)
  • SplashScreen (24-83)
app/src/main/java/com/konkuk/medicarecall/ui/feature/home/navigation/HomeNavigation.kt (1)
  • homeNavGraph (14-32)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/meal/screen/MealDetail.kt (1)
  • MealDetail (37-70)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/medicine/screen/MedicineDetail.kt (1)
  • MedicineDetail (43-78)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/sleep/screen/SleepDetail.kt (1)
  • SleepDetail (41-79)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/statehealth/screen/StateHealthDetail.kt (1)
  • StateHealthDetail (43-91)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/statemental/screen/StateMentalDetail.kt (1)
  • StateMentalDetail (39-76)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/glucoselevel/screen/GlucoseDetail.kt (1)
  • GlucoseDetail (58-136)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (1)
  • StatisticsScreen (49-121)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/SettingsScreen.kt (1)
  • SettingsScreen (40-302)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/ElderInfoScreen.kt (1)
  • PersonalInfoScreen (33-99)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/ElderDetailScreen.kt (1)
  • PersonalDetailScreen (49-247)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/HealthInfoScreen.kt (1)
  • HealthInfoScreen (33-99)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/HealthDetailScreen.kt (1)
  • HealthDetailScreen (40-135)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/SettingAlarmScreen.kt (1)
  • SettingAlarmScreen (36-182)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/SettingSubscribeScreen.kt (1)
  • SettingSubscribeScreen (31-81)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/SubscribeDetailScreen.kt (1)
  • SubscribeDetailScreen (36-147)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/AnnouncementScreen.kt (1)
  • AnnouncementScreen (26-82)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/AnnouncementDetailScreen.kt (1)
  • AnnouncementDetailScreen (28-95)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/ServiceCenterScreen.kt (1)
  • ServiceCenterScreen (23-61)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/MyDataSettingScreen.kt (1)
  • MyDataSettingScreen (47-198)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/MyDetailScreen.kt (1)
  • MyDetailScreen (40-137)
app/src/main/java/com/konkuk/medicarecall/ui/feature/alarm/screen/AlarmScreen.kt (1)
  • AlarmScreen (20-70)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginStartScreen.kt (1)
  • LoginStartScreen (35-128)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginPhoneScreen.kt (1)
  • LoginPhoneScreen (38-122)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginVerificationScreen.kt (1)
  • LoginVerificationScreen (41-171)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginMyInfoScreen.kt (1)
  • LoginMyInfoScreen (58-315)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/LoginElderInfoScreen.kt (1)
  • LoginElderScreen (47-234)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/LoginElderMedInfoScreen.kt (1)
  • LoginElderMedInfoScreen (45-197)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/carecall/screen/SetCallScreen.kt (1)
  • SetCallScreen (65-398)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/PaymentScreen.kt (1)
  • PaymentScreen (44-167)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/NaverPayScreen.kt (1)
  • NaverPayScreen (52-535)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/FinishSplashScreen.kt (1)
  • FinishSplashScreen (27-69)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/AnnouncementScreen.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/MainNavigator.kt (1)
  • navigateToNoticeDetail (199-201)
app/src/main/java/com/konkuk/medicarecall/ui/feature/home/navigation/HomeNavigation.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/feature/home/screen/HomeScreen.kt (1)
  • HomeScreen (76-131)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginStartScreen.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/MainNavigator.kt (1)
  • navigateToHome (138-140)
app/src/main/java/com/konkuk/medicarecall/ui/feature/home/screen/HomeScreen.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/common/component/NameBar.kt (1)
  • NameBar (27-77)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/SettingsScreen.kt (3)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/component/SettingsTopAppBar.kt (1)
  • SettingsTopAppBar (22-80)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/MainNavigator.kt (4)
  • navigateToUserInfo (207-209)
  • navigateToNotice (195-197)
  • navigateToElderPersonalInfo (167-169)
  • navigateToNotificationSetting (183-185)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/navigation/SettingNavigation.kt (1)
  • navigateToElderHealthInfo (47-49)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/navigation/LoginNavigation.kt (10)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginStartScreen.kt (1)
  • LoginStartScreen (35-128)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginPhoneScreen.kt (1)
  • LoginPhoneScreen (38-122)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginVerificationScreen.kt (1)
  • LoginVerificationScreen (41-171)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginMyInfoScreen.kt (1)
  • LoginMyInfoScreen (58-315)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/LoginElderInfoScreen.kt (1)
  • LoginElderScreen (47-234)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/LoginElderMedInfoScreen.kt (1)
  • LoginElderMedInfoScreen (45-197)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/carecall/screen/SetCallScreen.kt (1)
  • SetCallScreen (65-398)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/PaymentScreen.kt (1)
  • PaymentScreen (44-167)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/NaverPayScreen.kt (1)
  • NaverPayScreen (52-535)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/FinishSplashScreen.kt (1)
  • FinishSplashScreen (27-69)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/SettingSubscribeScreen.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/component/SubscribeCard.kt (1)
  • SubscribeCard (27-81)
app/src/main/java/com/konkuk/medicarecall/MainActivity.kt (3)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/MainNavigator.kt (1)
  • rememberMainNavigator (235-240)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/component/MainBottomBar.kt (1)
  • MainBottomBar (39-81)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/NavGraph.kt (1)
  • NavGraph (67-528)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/navigation/StatisticsNavigation.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (1)
  • StatisticsScreen (49-121)
app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/statemental/screen/StateMentalDetail.kt (3)
app/src/main/java/com/konkuk/medicarecall/ui/common/component/TopAppBar.kt (1)
  • TopAppBar (26-76)
app/src/main/java/com/konkuk/medicarecall/ui/feature/calendar/DateSelector.kt (1)
  • DateSelector (24-70)
app/src/main/java/com/konkuk/medicarecall/ui/feature/calendar/WeeklyCalendar.kt (1)
  • WeeklyCalendar (25-94)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginPhoneScreen.kt (2)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/component/LoginBackButton.kt (1)
  • LoginBackButton (17-37)
app/src/main/java/com/konkuk/medicarecall/ui/common/component/DefaultSnackBar.kt (1)
  • DefaultSnackBar (17-37)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/navigation/SettingNavigation.kt (13)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/SettingsScreen.kt (1)
  • SettingsScreen (40-302)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/ElderInfoScreen.kt (1)
  • PersonalInfoScreen (33-99)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/ElderDetailScreen.kt (1)
  • PersonalDetailScreen (49-247)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/HealthInfoScreen.kt (1)
  • HealthInfoScreen (33-99)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/HealthDetailScreen.kt (1)
  • HealthDetailScreen (40-135)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/SettingAlarmScreen.kt (1)
  • SettingAlarmScreen (36-182)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/SettingSubscribeScreen.kt (1)
  • SettingSubscribeScreen (31-81)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/SubscribeDetailScreen.kt (1)
  • SubscribeDetailScreen (36-147)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/AnnouncementScreen.kt (1)
  • AnnouncementScreen (26-82)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/AnnouncementDetailScreen.kt (1)
  • AnnouncementDetailScreen (28-95)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/ServiceCenterScreen.kt (1)
  • ServiceCenterScreen (23-61)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/MyDataSettingScreen.kt (1)
  • MyDataSettingScreen (47-198)
app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/MyDetailScreen.kt (1)
  • MyDetailScreen (40-137)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/LoginElderMedInfoScreen.kt (3)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/component/LoginBackButton.kt (1)
  • LoginBackButton (17-37)
app/src/main/java/com/konkuk/medicarecall/ui/common/component/ChipItem.kt (1)
  • ChipItem (22-52)
app/src/main/java/com/konkuk/medicarecall/ui/common/component/DefaultSnackBar.kt (1)
  • DefaultSnackBar (17-37)

Comment on lines +18 to +20
fun NavGraphBuilder.statisticsNavGraph(
navController: NavHostController, // 나중에 바꿔야함.
getBackStackHomeViewModel: @Composable (NavBackStackEntry) -> HomeViewModel,
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion | 🟠 Major

navController 파라미터를 콜백 기반으로 교체하는 게 좋겠습니다.

TODO 코멘트("나중에 바꿔야함")가 있는 navController 파라미터는 PR의 목표(UDF 준수를 위해 NavController 의존성 제거)와 일치하지 않습니다. 다른 NavGraph 구현들처럼 필요한 네비게이션 동작을 콜백으로 받는 방식으로 변경하는 것을 권장합니다.

예시:

 fun NavGraphBuilder.statisticsNavGraph(
-    navController: NavHostController, // 나중에 바꿔야함.
+    navigateToAlarm: () -> Unit,
     getBackStackHomeViewModel: @Composable (NavBackStackEntry) -> HomeViewModel,
 ) {

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In app/src/main/.../StatisticsNavigation.kt around lines 18-20, replace the
NavHostController parameter with callback lambdas for the navigation actions the
graph needs (e.g., onNavigateToDetail: (id: String) -> Unit, onNavigateUp: () ->
Unit) instead of passing navController; update the statisticsNavGraph signature
to accept those callbacks, remove direct NavController usages inside the graph
and invoke the callbacks where navigation would occur, and update all callers to
pass appropriate lambdas (or hoisted navController actions) so the file no
longer depends on NavHostController and matches other NavGraph implementations.

Comment on lines +25 to +28
StatisticsScreen(
navController = navController,
homeViewModel = homeViewModel,
)
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion | 🟠 Major

navigateToAlarm 콜백 파라미터를 전달해주세요.

StatisticsScreennavigateToAlarm 파라미터를 받도록 시그니처가 변경되었는데(관련 파일 참조), 여기서는 전달하지 않고 있습니다. 기본값이 빈 람다이긴 하지만, PR의 네비게이션 패턴(콜백 기반 네비게이션)을 일관되게 적용하려면 명시적으로 전달하는 게 좋습니다.

         StatisticsScreen(
             navController = navController,
+            navigateToAlarm = navigateToAlarm,
             homeViewModel = homeViewModel,
         )

참고: 위의 navController 파라미터를 제거하는 리팩토링과 함께 적용하면 더욱 깔끔해집니다.

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/navigation/StatisticsNavigation.kt
around lines 25-28, the call to StatisticsScreen omits the newly added
navigateToAlarm callback parameter; update the invocation to explicitly pass the
callback (for example navigateToAlarm = { homeViewModel.navigateToAlarm() } or
navigateToAlarm = { navController.navigate("alarm_route") } depending on your
app navigation API) and while here, remove the now-unneeded navController
parameter from StatisticsScreen if you’ve refactored to callback-based
navigation to keep the pattern consistent.

- Rename `navigateTpRegisterUserInfo` to `navigateToRegisterUserInfo` to fix a typo.
- Remove unused imports in `MainActivity` and `LoginNavigation`.
@librawish808
Copy link
Collaborator

LGTM!

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (2)
app/src/main/java/com/konkuk/medicarecall/MainActivity.kt (1)

70-88: MainTab.entries.toList() 중복 할당 줄이기

여기서 매 리컴포지션마다 새 리스트를 만들고 있어서 살짝 아깝습니다. remember로 한 번만 만들어두면 가벼워져요.

+import androidx.compose.runtime.remember-            val navigator = rememberMainNavigator()
+            val navigator = rememberMainNavigator()
+            val mainTabs = remember { MainTab.entries.toList() }-                            tabs = MainTab.entries.toList(),
+                            tabs = mainTabs,
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/navigation/LoginNavigation.kt (1)

63-79: 함수 시그니처가 다소 길지만, 현재 구조로는 적절합니다.

15개의 콜백 파라미터가 다소 많아 보이긴 하지만, 로그인 플로우가 복잡하고 각 화면이 NavController에 의존하지 않도록 하는 좋은 아키텍처 선택입니다. 만약 파라미터가 더 늘어난다면 configuration 객체로 그룹핑하는 것을 고려해볼 수 있지만, 지금은 충분히 관리 가능한 수준입니다.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 14b28c0 and e0600fe.

📒 Files selected for processing (2)
  • app/src/main/java/com/konkuk/medicarecall/MainActivity.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/login/navigation/LoginNavigation.kt (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
app/src/main/java/com/konkuk/medicarecall/MainActivity.kt (3)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/MainNavigator.kt (1)
  • rememberMainNavigator (235-240)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/component/MainBottomBar.kt (1)
  • MainBottomBar (39-81)
app/src/main/java/com/konkuk/medicarecall/ui/navigation/NavGraph.kt (1)
  • NavGraph (67-528)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/navigation/LoginNavigation.kt (10)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginStartScreen.kt (1)
  • LoginStartScreen (35-128)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginPhoneScreen.kt (1)
  • LoginPhoneScreen (38-122)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginVerificationScreen.kt (1)
  • LoginVerificationScreen (41-171)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/info/screen/LoginMyInfoScreen.kt (1)
  • LoginMyInfoScreen (58-315)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/LoginElderInfoScreen.kt (1)
  • LoginElderScreen (47-234)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/LoginElderMedInfoScreen.kt (1)
  • LoginElderMedInfoScreen (45-197)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/carecall/screen/SetCallScreen.kt (1)
  • SetCallScreen (65-398)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/PaymentScreen.kt (1)
  • PaymentScreen (44-167)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/NaverPayScreen.kt (1)
  • NaverPayScreen (52-535)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/FinishSplashScreen.kt (1)
  • FinishSplashScreen (27-69)
🔇 Additional comments (2)
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/navigation/LoginNavigation.kt (2)

23-61: 타입 안전한 네비게이션 확장 함수들이 잘 구현되어 있습니다.

Route 객체를 사용한 타입 안전 네비게이션으로 마이그레이션이 깔끔하게 처리되었네요. 일관된 네이밍 패턴과 필요한 곳에만 NavOptions를 받는 구조도 좋습니다.


80-157: 로그인 플로우의 라우트 정의가 체계적으로 구성되어 있습니다.

각 화면이 콜백 기반 네비게이션을 받도록 리팩토링되어 NavController 의존성이 제거된 점이 훌륭합니다. ViewModel 공유 패턴도 올바르게 적용되었고, 126번 라인의 navigateToCareCallSettingWithPopUpTo 사용도 백스택 관리를 위한 의도적인 선택으로 보입니다.

import com.konkuk.medicarecall.ui.feature.login.senior.LoginElderViewModel
import com.konkuk.medicarecall.ui.feature.login.senior.screen.LoginElderMedInfoScreen
import com.konkuk.medicarecall.ui.feature.login.senior.screen.LoginElderScreen
import com.konkuk.medicarecall.ui.navigation.Route
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Route 객체들의 정의를 확인해주세요.

타입 안전 네비게이션을 위해 사용되는 Route.* 객체들이 올바르게 정의되어 있는지 검증이 필요합니다. Serializable 지원이 제대로 구현되어 있는지 확인해주세요.

다음 스크립트로 Route 정의를 확인할 수 있습니다:


🏁 Script executed:

#!/bin/bash
# Route 클래스의 정의를 확인하여 type-safe navigation에 필요한 serializable 객체들이 제대로 선언되어 있는지 검증

# Route 파일 찾기
route_file=$(fd -t f "Route.kt" app/src/main/java)

if [ -z "$route_file" ]; then
  echo "Route.kt 파일을 찾을 수 없습니다."
  exit 1
fi

echo "=== Route 파일 위치 ==="
echo "$route_file"
echo ""

echo "=== Login 관련 Route 객체 정의 ==="
rg -A 2 "object Login|class Login" "$route_file"

Length of output: 714


Serializable 어노테이션 누락 (LoginStart)
Route.ktLoginStart 객체에 @Serializable이 빠져 있습니다. 모든 네비게이션 Route 객체에 직렬화 어노테이션을 일관되게 적용해주세요.

🤖 Prompt for AI Agents
In
app/src/main/java/com/konkuk/medicarecall/ui/feature/login/navigation/LoginNavigation.kt
around line 21, the import shows Route usage but Route.LoginStart in Route.kt is
missing the @Serializable annotation; update the Route.kt file to add
@Serializable to the LoginStart object (and ensure
kotlinx.serialization.Serializable is imported), keeping annotations consistent
with other Route objects so the navigation routes are serializable.

# Conflicts:
#	app/src/main/java/com/konkuk/medicarecall/MainActivity.kt
#	app/src/main/java/com/konkuk/medicarecall/navigation/NavGraph.kt
#	app/src/main/java/com/konkuk/medicarecall/ui/common/component/NameBar.kt
#	app/src/main/java/com/konkuk/medicarecall/ui/common/component/TopAppBar.kt
#	app/src/main/java/com/konkuk/medicarecall/ui/feature/home/screen/HomeScreen.kt
#	app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/meal/screen/MealDetail.kt
#	app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/medicine/screen/MedicineDetail.kt
#	app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/sleep/screen/SleepDetail.kt
#	app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/statehealth/screen/StateHealthDetail.kt
#	app/src/main/java/com/konkuk/medicarecall/ui/feature/homedetail/statemental/screen/StateMentalDetail.kt
#	app/src/main/java/com/konkuk/medicarecall/ui/feature/login/carecall/screen/CallTimeScreen.kt
#	app/src/main/java/com/konkuk/medicarecall/ui/feature/login/payment/screen/LoginFinishScreen.kt
#	app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/LoginElderInfoScreen.kt
#	app/src/main/java/com/konkuk/medicarecall/ui/feature/login/senior/screen/LoginElderMedInfoScreen.kt
#	app/src/main/java/com/konkuk/medicarecall/ui/feature/settings/screen/MyDataSettingScreen.kt
#	app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt
@ikseong00 ikseong00 merged commit 2293062 into develop Oct 27, 2025
1 of 2 checks passed
@ikseong00 ikseong00 deleted the feat/navigation-#113 branch October 27, 2025 08:15
@ikseong00 ikseong00 changed the title [Feat] 네비게이션 UI, 로직 수정 #113 #114 (No Merge) [Feat] 네비게이션 UI, 로직 수정 #113 #114 Oct 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Refactor] Type Safe Navigation 으로 마이그레이션 [Feat] 메인 네비게이션 바 구현

3 participants