From 415b997d86f6e31103782ed64dc93676cb8d5e03 Mon Sep 17 00:00:00 2001 From: Aditya Gupta <94394661+Aditya-gupta99@users.noreply.github.com> Date: Wed, 21 Aug 2024 21:01:08 +0530 Subject: [PATCH] feat: implemented compose navigation in path tracking module (#2198) --- .../path_tracking/PathTrackingScreen.kt | 22 +++++++++++++-- .../navigation/PathTrackingNavigation.kt | 28 +++++++++++-------- .../navigation/PathTrackingScreens.kt | 9 ++++++ .../mifosxdroid/HomeDestinationsScreen.kt | 6 ++-- .../pathtracking/PathTrackingActivity.kt | 6 ++-- .../mifosxdroid/components/Navigation.kt | 7 +++-- 6 files changed, 56 insertions(+), 22 deletions(-) create mode 100644 feature/path-tracking/src/main/java/com/mifos/feature/path_tracking/navigation/PathTrackingScreens.kt diff --git a/feature/path-tracking/src/main/java/com/mifos/feature/path_tracking/PathTrackingScreen.kt b/feature/path-tracking/src/main/java/com/mifos/feature/path_tracking/PathTrackingScreen.kt index 3288fd9e21..a7b8f7a232 100644 --- a/feature/path-tracking/src/main/java/com/mifos/feature/path_tracking/PathTrackingScreen.kt +++ b/feature/path-tracking/src/main/java/com/mifos/feature/path_tracking/PathTrackingScreen.kt @@ -9,6 +9,7 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter +import android.net.Uri import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth @@ -50,6 +51,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat.registerReceiver +import androidx.core.content.ContextCompat.startActivity import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.google.android.gms.maps.model.CameraPosition @@ -73,8 +75,7 @@ import com.mifos.feature.path.tracking.R @Composable fun PathTrackingScreen( - onBackPressed: () -> Unit, - onPathTrackingClick: (List<UserLatLng>) -> Unit + onBackPressed: () -> Unit ) { val context = LocalContext.current @@ -115,7 +116,22 @@ fun PathTrackingScreen( onRetry = { viewModel.loadPathTracking() }, - onPathTrackingClick = onPathTrackingClick, + onPathTrackingClick = { userLatLngs -> + val uri = if (userLatLngs.isNotEmpty()) { + val originLatLng = userLatLngs[0] + val destinationLatLng = userLatLngs[userLatLngs.size - 1] + "http://maps.google.com/maps?f=d&hl=en&saddr=${originLatLng.lat},${originLatLng.lng}&daddr=${destinationLatLng.lat},${destinationLatLng.lng}" + } else { + // Handle the case when userLatLngs is empty + "" + } + + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(uri)) + intent.setClassName( + "com.google.android.apps.maps", "com.google.android.maps.MapsActivity" + ) + startActivity(context, Intent.createChooser(intent, "Start Tracking"), null) + }, onRefresh = { viewModel.refreshCenterList() }, diff --git a/feature/path-tracking/src/main/java/com/mifos/feature/path_tracking/navigation/PathTrackingNavigation.kt b/feature/path-tracking/src/main/java/com/mifos/feature/path_tracking/navigation/PathTrackingNavigation.kt index 8074b4e839..4229a0c78d 100644 --- a/feature/path-tracking/src/main/java/com/mifos/feature/path_tracking/navigation/PathTrackingNavigation.kt +++ b/feature/path-tracking/src/main/java/com/mifos/feature/path_tracking/navigation/PathTrackingNavigation.kt @@ -3,24 +3,30 @@ package com.mifos.feature.path_tracking.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable +import androidx.navigation.navigation import com.mifos.feature.path_tracking.PathTrackingScreen -/** - * Created by Pronay Sarker on 10/08/2024 (7:35 AM) - */ -const val PATH_TRACKING_SCREEN_ROUTE = "path_tracking_route" - -fun NavController.navigateToPathTrackingScreen() { - this.navigate(PATH_TRACKING_SCREEN_ROUTE) +fun NavGraphBuilder.pathTrackingNavGraph( + navController: NavController +) { + navigation( + startDestination = PathTrackingScreens.PathTrackingScreen.route, + route = PathTrackingScreens.PathTrackingScreenRoute.route + ) { + pathTrackingRoute( + onBackPressed = navController::popBackStack + ) + } } -fun NavGraphBuilder.pathTrackingScreen( +fun NavGraphBuilder.pathTrackingRoute( onBackPressed: () -> Unit ) { - composable(PATH_TRACKING_SCREEN_ROUTE) { + composable( + route = PathTrackingScreens.PathTrackingScreen.route + ) { PathTrackingScreen( - onBackPressed = onBackPressed, - onPathTrackingClick = {} + onBackPressed = onBackPressed ) } } \ No newline at end of file diff --git a/feature/path-tracking/src/main/java/com/mifos/feature/path_tracking/navigation/PathTrackingScreens.kt b/feature/path-tracking/src/main/java/com/mifos/feature/path_tracking/navigation/PathTrackingScreens.kt new file mode 100644 index 0000000000..6e564a8da4 --- /dev/null +++ b/feature/path-tracking/src/main/java/com/mifos/feature/path_tracking/navigation/PathTrackingScreens.kt @@ -0,0 +1,9 @@ +package com.mifos.feature.path_tracking.navigation + +sealed class PathTrackingScreens(val route: String) { + + data object PathTrackingScreenRoute : PathTrackingScreens("path_tracking_screen_route") + + data object PathTrackingScreen : PathTrackingScreens("path_tracking_screen") + +} \ No newline at end of file diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/HomeDestinationsScreen.kt b/mifosng-android/src/main/java/com/mifos/mifosxdroid/HomeDestinationsScreen.kt index 7d85da4b7d..d587cf8a15 100644 --- a/mifosng-android/src/main/java/com/mifos/mifosxdroid/HomeDestinationsScreen.kt +++ b/mifosng-android/src/main/java/com/mifos/mifosxdroid/HomeDestinationsScreen.kt @@ -20,7 +20,9 @@ import com.mifos.feature.checker_inbox_task.navigation.CheckerInboxTaskScreens import com.mifos.feature.groups.navigation.GROUP_LIST_SCREEN_ROUTE -import com.mifos.feature.path_tracking.navigation.PATH_TRACKING_SCREEN_ROUTE +import com.mifos.feature.individual_collection_sheet.navigation.GENERATE_COLLECTION_SHEET_SCREEN_ROUTE +import com.mifos.feature.individual_collection_sheet.navigation.INDIVIDUAL_COLLECTION_SHEET_SCREEN_ROUTE +import com.mifos.feature.path_tracking.navigation.PathTrackingScreens import com.mifos.feature.search.Navigation.SEARCH_SCREEN_ROUTE import com.mifos.feature.settings.navigation.SETTINGS_SCREEN_ROUTE @@ -79,7 +81,7 @@ sealed class HomeDestinationsScreen( data object PathTrackerScreen : HomeDestinationsScreen( title = "Path Tracker", - route = PATH_TRACKING_SCREEN_ROUTE, + route = PathTrackingScreens.PathTrackingScreen.route, icon = Icons.Rounded.PersonPinCircle ) diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/activity/pathtracking/PathTrackingActivity.kt b/mifosng-android/src/main/java/com/mifos/mifosxdroid/activity/pathtracking/PathTrackingActivity.kt index 3eb17534ae..e1fb768f65 100644 --- a/mifosng-android/src/main/java/com/mifos/mifosxdroid/activity/pathtracking/PathTrackingActivity.kt +++ b/mifosng-android/src/main/java/com/mifos/mifosxdroid/activity/pathtracking/PathTrackingActivity.kt @@ -27,9 +27,9 @@ class PathTrackingActivity : MifosBaseActivity() { setContent { PathTrackingScreen( onBackPressed = { finish() }, - onPathTrackingClick = { userLatLngs -> - onUserLocationClick(userLatLngs) - } +// onPathTrackingClick = { userLatLngs -> +// onUserLocationClick(userLatLngs) +// } ) } } diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/components/Navigation.kt b/mifosng-android/src/main/java/com/mifos/mifosxdroid/components/Navigation.kt index 343d8c0e4e..b4b1e564e5 100644 --- a/mifosng-android/src/main/java/com/mifos/mifosxdroid/components/Navigation.kt +++ b/mifosng-android/src/main/java/com/mifos/mifosxdroid/components/Navigation.kt @@ -24,7 +24,7 @@ import com.mifos.feature.loan.navigation.navigateToLoanAccountScreen import com.mifos.feature.loan.navigation.navigateToLoanAccountSummaryScreen import com.mifos.feature.note.navigation.navigateToNoteScreen import com.mifos.feature.note.navigation.noteScreen -import com.mifos.feature.path_tracking.navigation.pathTrackingScreen +import com.mifos.feature.path_tracking.navigation.pathTrackingNavGraph import com.mifos.feature.report.navigation.reportNavGraph import com.mifos.feature.savings.navigation.addSavingsAccountScreen import com.mifos.feature.savings.navigation.navigateToAddSavingsAccount @@ -127,8 +127,9 @@ fun Navigation( checkerInboxTaskGraph( navController = navController ) - pathTrackingScreen( - onBackPressed = { navController.popBackStack() } + + pathTrackingNavGraph( + navController = navController ) settingsScreen(