From f17a3df90a23f88ff474de679bbdbcf063bcdc34 Mon Sep 17 00:00:00 2001 From: dongchyeon Date: Fri, 14 Feb 2025 00:26:00 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[FEAT/#117]=20=EC=95=8C=EB=9E=8C=20?= =?UTF-8?q?=EB=81=84=EA=B8=B0=20=ED=9B=84=20=EB=94=A5=EB=A7=81=ED=81=AC?= =?UTF-8?q?=EB=A5=BC=20=ED=86=B5=ED=95=9C=20=EB=AF=B8=EC=85=98=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 9 ++++ .../AlarmInteractionActivityReceiver.kt | 5 +++ .../java/com/yapp/mission/MissionNavGraph.kt | 38 +++++++++++------ .../java/com/yapp/navigator/MainActivity.kt | 41 ++++++++++++++++++- .../java/com/yapp/navigator/OrbitNavHost.kt | 2 +- 5 files changed, 81 insertions(+), 14 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0f22f886..3bdddf10 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -35,6 +35,15 @@ + + + + + + + - composable(destination.route) { backStackEntry -> - val viewModel = backStackEntry.sharedHiltViewModel(navigator.navController) - - LaunchedEffect(viewModel) { - viewModel.container.sideEffectFlow.collect { sideEffect -> - handleMissionSideEffect(sideEffect, navigator, viewModel) - } + composable( + route = MissionDestination.Mission.route, + deepLinks = listOf( + navDeepLink { + uriPattern = "orbitapp://mission" + }, + ), + ) { backStackEntry -> + val viewModel = backStackEntry.sharedHiltViewModel(navigator.navController) + + LaunchedEffect(viewModel) { + viewModel.container.sideEffectFlow.collect { sideEffect -> + handleMissionSideEffect(sideEffect, navigator, viewModel) } + } + + MissionRoute(viewModel) + } + + composable(MissionDestination.Progress.route) { backStackEntry -> + val viewModel = backStackEntry.sharedHiltViewModel(navigator.navController) - when (destination) { - MissionDestination.Mission -> MissionRoute(viewModel) - MissionDestination.Progress -> MissionProgressRoute(viewModel) - else -> {} + LaunchedEffect(viewModel) { + viewModel.container.sideEffectFlow.collect { sideEffect -> + handleMissionSideEffect(sideEffect, navigator, viewModel) } } + + MissionProgressRoute(viewModel) } } } diff --git a/feature/navigator/src/main/java/com/yapp/navigator/MainActivity.kt b/feature/navigator/src/main/java/com/yapp/navigator/MainActivity.kt index 74e8e2fd..ed0aa862 100644 --- a/feature/navigator/src/main/java/com/yapp/navigator/MainActivity.kt +++ b/feature/navigator/src/main/java/com/yapp/navigator/MainActivity.kt @@ -1,17 +1,25 @@ package com.yapp.navigator import android.annotation.SuppressLint +import android.content.Intent import android.content.pm.ActivityInfo import android.os.Bundle +import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.SystemBarStyle import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge +import androidx.compose.runtime.LaunchedEffect +import androidx.navigation.NavController +import com.yapp.common.navigation.rememberOrbitNavigator import com.yapp.designsystem.theme.OrbitTheme import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class MainActivity : ComponentActivity() { + + private lateinit var navController: NavController + @SuppressLint("SourceLockedOrientationActivity") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -27,9 +35,40 @@ class MainActivity : ComponentActivity() { ), ) setContent { + val navigator = rememberOrbitNavigator() + this.navController = navigator.navController + OrbitTheme { - OrbitNavHost() + OrbitNavHost( + navigator = navigator, + ) + } + + LaunchedEffect(Unit) { + handleIntent(intent) + } + } + } + + override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + + setIntent(intent) + handleIntent(intent) + } + + private fun handleIntent(intent: Intent) { + val uri = intent.data + if (uri != null) { + if (::navController.isInitialized) { + if (!navController.handleDeepLink(intent)) { + Log.e("debugging", "Failed to handle deep link: $uri") + } + } else { + Log.e("debugging", "NavController is not initialized yet") } + } else { + Log.w("debugging", "No URI found in the intent") } } } diff --git a/feature/navigator/src/main/java/com/yapp/navigator/OrbitNavHost.kt b/feature/navigator/src/main/java/com/yapp/navigator/OrbitNavHost.kt index 683e10cd..ccaaa1f7 100644 --- a/feature/navigator/src/main/java/com/yapp/navigator/OrbitNavHost.kt +++ b/feature/navigator/src/main/java/com/yapp/navigator/OrbitNavHost.kt @@ -52,7 +52,7 @@ internal fun OrbitNavHost( ) { NavHost( navController = navigator.navController, - startDestination = SplashDestination.Route.route, // ✅ Splash를 가장 먼저 띄움 + startDestination = SplashDestination.Route.route, modifier = Modifier.navigationBarsPadding(), ) { composable(SplashDestination.Route.route) { From ff9e1d210fdda4533c8b3e19e4aa8052c268484b Mon Sep 17 00:00:00 2001 From: dongchyeon Date: Fri, 14 Feb 2025 01:37:10 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[REMOVE/#117]=20handleIntent=EB=A1=9C=20?= =?UTF-8?q?=EC=9D=B8=ED=95=9C=20=ED=99=95=EC=9E=A5=20=EC=95=A0=EB=8B=88?= =?UTF-8?q?=EB=A9=94=EC=9D=B4=EC=85=98=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yapp/navigator/MainActivity.kt | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/feature/navigator/src/main/java/com/yapp/navigator/MainActivity.kt b/feature/navigator/src/main/java/com/yapp/navigator/MainActivity.kt index ed0aa862..5863eb31 100644 --- a/feature/navigator/src/main/java/com/yapp/navigator/MainActivity.kt +++ b/feature/navigator/src/main/java/com/yapp/navigator/MainActivity.kt @@ -1,25 +1,18 @@ package com.yapp.navigator import android.annotation.SuppressLint -import android.content.Intent import android.content.pm.ActivityInfo import android.os.Bundle -import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.SystemBarStyle import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge -import androidx.compose.runtime.LaunchedEffect -import androidx.navigation.NavController import com.yapp.common.navigation.rememberOrbitNavigator import com.yapp.designsystem.theme.OrbitTheme import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class MainActivity : ComponentActivity() { - - private lateinit var navController: NavController - @SuppressLint("SourceLockedOrientationActivity") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -36,39 +29,12 @@ class MainActivity : ComponentActivity() { ) setContent { val navigator = rememberOrbitNavigator() - this.navController = navigator.navController OrbitTheme { OrbitNavHost( navigator = navigator, ) } - - LaunchedEffect(Unit) { - handleIntent(intent) - } - } - } - - override fun onNewIntent(intent: Intent) { - super.onNewIntent(intent) - - setIntent(intent) - handleIntent(intent) - } - - private fun handleIntent(intent: Intent) { - val uri = intent.data - if (uri != null) { - if (::navController.isInitialized) { - if (!navController.handleDeepLink(intent)) { - Log.e("debugging", "Failed to handle deep link: $uri") - } - } else { - Log.e("debugging", "NavController is not initialized yet") - } - } else { - Log.w("debugging", "No URI found in the intent") } } }