diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreen.kt index f3112ca7..03fa4382 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreen.kt @@ -81,7 +81,7 @@ fun HomeScreen(verifyingSpace: Boolean) { modifier = Modifier .padding(it) ) { - HomeScreenContent(navController) + HomeScreenContent(navController, viewModel::dismissSpaceSelection) HomeTopBar(verifyingSpace) } @@ -207,13 +207,13 @@ private fun MapControl( @OptIn(ExperimentalAnimationApi::class) @Composable -fun HomeScreenContent(navController: NavHostController) { +fun HomeScreenContent(navController: NavHostController, dismissSpaceSelection: () -> Unit) { NavHost( navController = navController, startDestination = AppDestinations.map.path ) { tabComposable(AppDestinations.map.path) { - MapScreen() + MapScreen(dismissSpaceSelection) } tabComposable(AppDestinations.places.path) { diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreenViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreenViewModel.kt index b53ce479..038ded2d 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreenViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreenViewModel.kt @@ -119,6 +119,10 @@ class HomeScreenViewModel @Inject constructor( _state.value.copy(showSpaceSelectionPopup = !state.value.showSpaceSelectionPopup) } + fun dismissSpaceSelection() { + _state.value = _state.value.copy(showSpaceSelectionPopup = false) + } + fun navigateToCreateSpace() { navigator.navigateTo(AppDestinations.createSpace.path) } diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt index 3e734ca8..89d91d71 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt @@ -85,7 +85,7 @@ private const val DEFAULT_CAMERA_ZOOM_FOR_SELECTED_USER = 17f @OptIn(ExperimentalPermissionsApi::class) @Composable -fun MapScreen() { +fun MapScreen(dismissSpaceSelection: () -> Unit) { val viewModel = hiltViewModel() val state by viewModel.state.collectAsState() val scope = rememberCoroutineScope() @@ -136,7 +136,7 @@ fun MapScreen() { } Box(modifier = Modifier.fillMaxSize()) { - MapView(cameraPositionState) + MapView(cameraPositionState, dismissSpaceSelection) Column( modifier = Modifier @@ -145,6 +145,7 @@ fun MapScreen() { ) { Column(modifier = Modifier.align(Alignment.End)) { MapControlBtn(icon = R.drawable.ic_map_type) { + dismissSpaceSelection() viewModel.toggleStyleSheetVisibility(true) } @@ -153,6 +154,7 @@ fun MapScreen() { show = relocate ) { scope.launch { + dismissSpaceSelection() if (state.isMapLoaded) { cameraPositionState.animate( CameraUpdateFactory.newLatLngZoom( @@ -169,6 +171,7 @@ fun MapScreen() { containerColor = AppTheme.colorScheme.primary, contentColor = AppTheme.colorScheme.textInversePrimary ) { + dismissSpaceSelection() viewModel.navigateToPlaces() } } @@ -212,6 +215,7 @@ fun MapScreen() { } items(state.members) { MapUserItem(it) { + dismissSpaceSelection() viewModel.showMemberDetail(it) } } @@ -330,7 +334,8 @@ fun PermissionFooter(onClick: () -> Unit) { @Composable private fun MapView( - cameraPositionState: CameraPositionState + cameraPositionState: CameraPositionState, + dismissSpaceSelection: () -> Unit ) { val viewModel = hiltViewModel() val state by viewModel.state.collectAsState() @@ -368,6 +373,15 @@ private fun MapView( ), onMapLoaded = { viewModel.onMapLoaded() + }, + onMapClick = { + dismissSpaceSelection() + if (state.showUserDetails) { + viewModel.dismissMemberDetail() + } + if (state.isStyleSheetVisible) { + viewModel.toggleStyleSheetVisibility(false) + } } ) { if (state.members.isNotEmpty()) { @@ -377,6 +391,10 @@ private fun MapView( location = it.location!!, isSelected = it.user.id == state.selectedUser?.user?.id ) { + dismissSpaceSelection() + if (state.isStyleSheetVisible) { + viewModel.toggleStyleSheetVisibility(false) + } viewModel.showMemberDetail(it) } } @@ -388,7 +406,12 @@ private fun MapView( user = currentUser, location = location.toApiLocation(currentUser.id), isSelected = currentUser.id == state.selectedUser?.user?.id - ) {} + ) { + dismissSpaceSelection() + if (state.isStyleSheetVisible) { + viewModel.toggleStyleSheetVisibility(false) + } + } } } diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapViewModel.kt index 31e766ea..f74a13cf 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapViewModel.kt @@ -182,7 +182,7 @@ class MapViewModel @Inject constructor( } fun toggleStyleSheetVisibility(isVisible: Boolean) { - _state.value = _state.value.copy(isStyleSheetVisible = isVisible) + _state.value = _state.value.copy(isStyleSheetVisible = isVisible, showUserDetails = false) } fun showJourneyTimeline() {