Browse Source

Refactor MapViewModel and MapScreen to remove NavigateUp event handling

- Removed NavigateUp event and action from MapViewModel and MapAction.
- Updated MapScreen to handle navigation directly without using the NavigateUp event.
- Introduced LaunchedEffect in MapScreen to update camera position based on location changes.
- Cleaned up unused imports and improved code readability.
Carles Sentis 6 days ago
parent
commit
c72af26fe7

+ 0 - 1
.idea/misc.xml

@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="ExternalStorageConfigurationManager" enabled="true" />
   <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">

+ 0 - 8
feature/maps/src/main/java/com/codeskraps/maps/presentation/MapViewModel.kt

@@ -1,7 +1,6 @@
 package com.codeskraps.maps.presentation
 
 import androidx.lifecycle.viewModelScope
-import com.codeskraps.core.local.domain.model.GeoLocation
 import com.codeskraps.core.local.domain.repository.LocalGeocodingRepository
 import com.codeskraps.core.local.domain.repository.LocalResourceRepository
 import com.codeskraps.core.location.domain.LocationTracker
@@ -106,13 +105,6 @@ class MapViewModel @Inject constructor(
                     isLoading = false
                 )
             }
-            MapEvent.NavigateUp -> {
-                android.util.Log.i(TAG, "Handling NavigateUp event")
-                viewModelScope.launch {
-                    actionChannel.send(MapAction.NavigateUp)
-                }
-                currentState
-            }
         }
     }
 

+ 13 - 10
feature/maps/src/main/java/com/codeskraps/maps/presentation/components/MapScreen.kt

@@ -22,6 +22,7 @@ import androidx.compose.material3.Text
 import androidx.compose.material3.TopAppBar
 import androidx.compose.material3.TopAppBarDefaults
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.toArgb
@@ -31,9 +32,9 @@ import androidx.core.content.res.ResourcesCompat
 import androidx.core.graphics.createBitmap
 import androidx.core.graphics.drawable.DrawableCompat
 import androidx.lifecycle.compose.LifecycleResumeEffect
+import com.codeskraps.feature.common.R
 import com.codeskraps.feature.common.components.ObserveAsEvents
 import com.codeskraps.feature.common.navigation.Screen
-import com.codeskraps.feature.common.R
 import com.codeskraps.maps.presentation.mvi.MapAction
 import com.codeskraps.maps.presentation.mvi.MapEvent
 import com.codeskraps.maps.presentation.mvi.MapState
@@ -65,17 +66,19 @@ fun MapScreen(
                 android.util.Log.i(tag, "Showing toast: ${mapAction.message}")
                 Toast.makeText(context, mapAction.message, Toast.LENGTH_SHORT).show()
             }
-            MapAction.NavigateUp -> {
-                android.util.Log.i(tag, "Received NavigateUp action")
-                navRoute("nav_up")
-            }
         }
     }
 
     val cameraPositionState = rememberCameraPositionState {
-        position = state.location?.let {
-            CameraPosition.fromLatLngZoom(it, 10f)
-        } ?: CameraPosition.fromLatLngZoom(LatLng(51.5074, -0.1278), 10f)
+        position = CameraPosition.fromLatLngZoom(LatLng(0.0, 0.0), 10f)
+    }
+
+    // Use LaunchedEffect to update camera position when location changes
+    LaunchedEffect(state.location) {
+        state.location?.let {
+            android.util.Log.i(tag, "Updating camera position to: $it")
+            cameraPositionState.position = CameraPosition.fromLatLngZoom(it, 10f)
+        }
     }
 
     LifecycleResumeEffect(Unit) {
@@ -88,7 +91,7 @@ fun MapScreen(
 
     BackHandler {
         android.util.Log.i(tag, "Back pressed, sending NavigateUp event")
-        handleEvent(MapEvent.NavigateUp)
+        navRoute("nav_up")
     }
 
     Scaffold(
@@ -105,7 +108,7 @@ fun MapScreen(
                     IconButton(
                         onClick = {
                             android.util.Log.i(tag, "Back button clicked, sending NavigateUp event")
-                            handleEvent(MapEvent.NavigateUp)
+                            navRoute("nav_up")
                         }
                     ) {
                         Icon(

+ 0 - 1
feature/maps/src/main/java/com/codeskraps/maps/presentation/mvi/MapAction.kt

@@ -2,5 +2,4 @@ package com.codeskraps.maps.presentation.mvi
 
 sealed interface MapAction {
     data class ShowToast(val message: String) : MapAction
-    data object NavigateUp : MapAction
 }

+ 0 - 1
feature/maps/src/main/java/com/codeskraps/maps/presentation/mvi/MapEvent.kt

@@ -9,5 +9,4 @@ sealed interface MapEvent {
     data object LoadCache : MapEvent
     data class Loaded(val geoLocations: List<GeoLocation>) : MapEvent
     data class Error(val message: String) : MapEvent
-    data object NavigateUp : MapEvent
 }