2 Angajamente 38809d31cf ... e7da11a5b3

Autor SHA1 Permisiunea de a trimite mesaje. Dacă este dezactivată, utilizatorul nu va putea trimite nici un fel de mesaj Data
  Carles Sentis e7da11a5b3 Update version code and name in build.gradle.kts to 17 and 2.6.1, and add new dependencies for core:local and core:location modules. Enhance ProGuard rules across multiple modules to ensure proper class retention and prevent warnings during builds. 1 lună în urmă
  Carles Sentis c72af26fe7 Refactor MapViewModel and MapScreen to remove NavigateUp event handling 1 lună în urmă

+ 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">

+ 4 - 2
app/build.gradle.kts

@@ -16,8 +16,8 @@ android {
         applicationId = "com.arklan.weather"
         minSdk = ConfigData.minSdk
         targetSdk = ConfigData.targetSdk
-        versionCode = 16
-        versionName = "2.6"
+        versionCode = 17
+        versionName = "2.6.1"
         setProperty("archivesBaseName", "weekly-weather-v$versionName.$versionCode")
 
         testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
@@ -71,6 +71,8 @@ dependencies {
     implementation(project(mapOf("path" to ":feature:weather")))
     implementation(project(mapOf("path" to ":feature:maps")))
     implementation(project(mapOf("path" to ":core:umami")))
+    implementation(project(mapOf("path" to ":core:local")))
+    implementation(project(mapOf("path" to ":core:location")))
 
     implementation(libs.androidx.core.ktx)
     implementation(libs.androidx.lifecycle.runtime.ktx)

+ 62 - 1
app/proguard-rules.pro

@@ -18,4 +18,65 @@
 
 # If you keep the line number information, uncomment this to
 # hide the original source file name.
-#-renamesourcefileattribute SourceFile
+#-renamesourcefileattribute SourceFile
+
+# Missing classes rules
+-keep class com.codeskraps.core.local.data.repository.** { *; }
+-keep class com.codeskraps.core.local.di.** { *; }
+-keep class com.codeskraps.core.local.domain.repository.** { *; }
+-keep class com.codeskraps.core.location.di.** { *; }
+-keep class com.codeskraps.core.location.domain.** { *; }
+-keep class com.codeskraps.feature.common.di.** { *; }
+-keep class com.codeskraps.feature.common.dispatcher.** { *; }
+-keep class com.codeskraps.feature.common.mvi.** { *; }
+-keep class com.codeskraps.feature.common.navigation.** { *; }
+-keep class com.codeskraps.feature.geocoding.** { *; }
+-keep class com.codeskraps.feature.weather.** { *; }
+-keep class com.codeskraps.maps.** { *; }
+-keep class com.codeskraps.umami.** { *; }
+
+# Java language APIs
+-dontwarn java.lang.invoke.StringConcatFactory
+
+# Additionally, adding specific rules from the missing_rules.txt
+-dontwarn com.codeskraps.core.local.data.repository.LocalGeocodingRepositoryImpl
+-dontwarn com.codeskraps.core.local.data.repository.LocalResourceRepositoryImpl
+-dontwarn com.codeskraps.core.local.di.LocalModule_ProvidesGeocodingDBFactory
+-dontwarn com.codeskraps.core.local.domain.repository.LocalGeocodingRepository
+-dontwarn com.codeskraps.core.local.domain.repository.LocalResourceRepository
+-dontwarn com.codeskraps.core.location.di.CoreLocationModule_ProvidesLocationTrackerFactory
+-dontwarn com.codeskraps.core.location.domain.LocationTracker
+-dontwarn com.codeskraps.feature.common.di.FeatureModule_ProvidesDispatcherProviderFactory
+-dontwarn com.codeskraps.feature.common.di.FeatureModule_ProvidesResourcesFactory
+-dontwarn com.codeskraps.feature.common.dispatcher.DispatcherProvider
+-dontwarn com.codeskraps.feature.common.mvi.StateReducerFlow
+-dontwarn com.codeskraps.feature.common.navigation.Screen$Geocoding
+-dontwarn com.codeskraps.feature.common.navigation.Screen$Map
+-dontwarn com.codeskraps.feature.common.navigation.Screen$Weather
+-dontwarn com.codeskraps.feature.geocoding.data.remote.GeocodingApi
+-dontwarn com.codeskraps.feature.geocoding.data.repository.GeocodingRepositoryImpl
+-dontwarn com.codeskraps.feature.geocoding.di.FeatureModule_ProvidesGeocodingApiFactory
+-dontwarn com.codeskraps.feature.geocoding.presentation.GeocodingViewModel
+-dontwarn com.codeskraps.feature.geocoding.presentation.GeocodingViewModel_HiltModules$KeyModule
+-dontwarn com.codeskraps.feature.geocoding.presentation.components.GeocodingScreenKt
+-dontwarn com.codeskraps.feature.geocoding.presentation.mvi.GeoEvent
+-dontwarn com.codeskraps.feature.geocoding.presentation.mvi.GeoState
+-dontwarn com.codeskraps.feature.geocoding.repository.GeocodingRepository
+-dontwarn com.codeskraps.feature.weather.data.remote.WeatherApi
+-dontwarn com.codeskraps.feature.weather.data.repository.WeatherRepositoryImpl
+-dontwarn com.codeskraps.feature.weather.di.FeatureModule_ProvidesWeatherApiFactory
+-dontwarn com.codeskraps.feature.weather.domain.repository.WeatherRepository
+-dontwarn com.codeskraps.feature.weather.presentation.WeatherViewModel
+-dontwarn com.codeskraps.feature.weather.presentation.WeatherViewModel_HiltModules$KeyModule
+-dontwarn com.codeskraps.feature.weather.presentation.components.WeatherScreenKt
+-dontwarn com.codeskraps.feature.weather.presentation.mvi.WeatherEvent
+-dontwarn com.codeskraps.feature.weather.presentation.mvi.WeatherState
+-dontwarn com.codeskraps.maps.presentation.MapViewModel
+-dontwarn com.codeskraps.maps.presentation.MapViewModel_HiltModules$KeyModule
+-dontwarn com.codeskraps.maps.presentation.components.MapScreenKt
+-dontwarn com.codeskraps.maps.presentation.mvi.MapEvent
+-dontwarn com.codeskraps.maps.presentation.mvi.MapState
+-dontwarn com.codeskraps.umami.di.CoreUmamiModule_ProvidesAnalyticsRepositoryFactory
+-dontwarn com.codeskraps.umami.di.CoreUmamiModule_ProvidesDeviceIdRepositoryFactory
+-dontwarn com.codeskraps.umami.domain.AnalyticsRepository
+-dontwarn com.codeskraps.umami.domain.DeviceIdRepository

+ 16 - 0
core/local/consumer-rules.pro

@@ -0,0 +1,16 @@
+# Keep all local domain models and repositories when consumed by other modules
+-keep class com.codeskraps.core.local.data.repository.** { *; }
+-keep class com.codeskraps.core.local.di.** { *; }
+-keep class com.codeskraps.core.local.domain.model.** { *; }
+-keep class com.codeskraps.core.local.domain.repository.** { *; }
+
+# Keep specifically problematic classes
+-keep class com.codeskraps.core.local.data.repository.LocalGeocodingRepositoryImpl { *; }
+-keep class com.codeskraps.core.local.data.repository.LocalResourceRepositoryImpl { *; }
+-keep class com.codeskraps.core.local.di.LocalModule_ProvidesGeocodingDBFactory { *; }
+-keep class com.codeskraps.core.local.domain.model.GeoLocation { *; }
+-keep class com.codeskraps.core.local.domain.repository.LocalGeocodingRepository { *; }
+-keep class com.codeskraps.core.local.domain.repository.LocalResourceRepository { *; }
+
+# Java language APIs
+-dontwarn java.lang.invoke.StringConcatFactory

+ 18 - 1
core/local/proguard-rules.pro

@@ -18,4 +18,21 @@
 
 # If you keep the line number information, uncomment this to
 # hide the original source file name.
-#-renamesourcefileattribute SourceFile
+#-renamesourcefileattribute SourceFile
+
+# Keep all local domain models and repositories
+-keep class com.codeskraps.core.local.data.repository.** { *; }
+-keep class com.codeskraps.core.local.di.** { *; }
+-keep class com.codeskraps.core.local.domain.model.** { *; }
+-keep class com.codeskraps.core.local.domain.repository.** { *; }
+
+# Keep specifically problematic classes
+-keep class com.codeskraps.core.local.data.repository.LocalGeocodingRepositoryImpl { *; }
+-keep class com.codeskraps.core.local.data.repository.LocalResourceRepositoryImpl { *; }
+-keep class com.codeskraps.core.local.di.LocalModule_ProvidesGeocodingDBFactory { *; }
+-keep class com.codeskraps.core.local.domain.model.GeoLocation { *; }
+-keep class com.codeskraps.core.local.domain.repository.LocalGeocodingRepository { *; }
+-keep class com.codeskraps.core.local.domain.repository.LocalResourceRepository { *; }
+
+# Java language APIs
+-dontwarn java.lang.invoke.StringConcatFactory

+ 5 - 2
core/local/src/main/java/com/codeskraps/core/local/di/LocalRepositoryModule.kt

@@ -7,18 +7,21 @@ import com.codeskraps.core.local.domain.repository.LocalResourceRepository
 import dagger.Binds
 import dagger.Module
 import dagger.hilt.InstallIn
-import dagger.hilt.android.components.ViewModelComponent
+import dagger.hilt.components.SingletonComponent
+import javax.inject.Singleton
 
 @Module
-@InstallIn(ViewModelComponent::class)
+@InstallIn(SingletonComponent::class)
 abstract class LocalRepositoryModule {
 
     @Binds
+    @Singleton
     abstract fun bindsGeocodingRepository(
         localGeocodingRepositoryImpl: LocalGeocodingRepositoryImpl
     ): LocalGeocodingRepository
 
     @Binds
+    @Singleton
     abstract fun bindsLocalResourceRepository(
         localResourceRepositoryImpl: LocalResourceRepositoryImpl
     ): LocalResourceRepository

+ 11 - 0
core/location/consumer-rules.pro

@@ -0,0 +1,11 @@
+# Keep all location module classes when consumed by other modules
+-keep class com.codeskraps.core.location.** { *; }
+-keep class com.codeskraps.core.location.di.** { *; }
+-keep class com.codeskraps.core.location.domain.** { *; }
+
+# Keep specifically problematic classes
+-keep class com.codeskraps.core.location.di.CoreLocationModule_ProvidesLocationTrackerFactory { *; }
+-keep class com.codeskraps.core.location.domain.LocationTracker { *; }
+
+# Java language APIs
+-dontwarn java.lang.invoke.StringConcatFactory

+ 13 - 1
core/location/proguard-rules.pro

@@ -18,4 +18,16 @@
 
 # If you keep the line number information, uncomment this to
 # hide the original source file name.
-#-renamesourcefileattribute SourceFile
+#-renamesourcefileattribute SourceFile
+
+# Keep all location module classes
+-keep class com.codeskraps.core.location.** { *; }
+-keep class com.codeskraps.core.location.di.** { *; }
+-keep class com.codeskraps.core.location.domain.** { *; }
+
+# Keep specifically problematic classes
+-keep class com.codeskraps.core.location.di.CoreLocationModule_ProvidesLocationTrackerFactory { *; }
+-keep class com.codeskraps.core.location.domain.LocationTracker { *; }
+
+# Java language APIs
+-dontwarn java.lang.invoke.StringConcatFactory

+ 13 - 0
core/umami/consumer-rules.pro

@@ -0,0 +1,13 @@
+# Keep all umami module classes when consumed by other modules
+-keep class com.codeskraps.umami.** { *; }
+-keep class com.codeskraps.umami.di.** { *; }
+-keep class com.codeskraps.umami.domain.** { *; }
+
+# Keep specifically problematic classes
+-keep class com.codeskraps.umami.di.CoreUmamiModule_ProvidesAnalyticsRepositoryFactory { *; }
+-keep class com.codeskraps.umami.di.CoreUmamiModule_ProvidesDeviceIdRepositoryFactory { *; }
+-keep class com.codeskraps.umami.domain.AnalyticsRepository { *; }
+-keep class com.codeskraps.umami.domain.DeviceIdRepository { *; }
+
+# Java language APIs
+-dontwarn java.lang.invoke.StringConcatFactory

+ 15 - 1
core/umami/proguard-rules.pro

@@ -18,4 +18,18 @@
 
 # If you keep the line number information, uncomment this to
 # hide the original source file name.
-#-renamesourcefileattribute SourceFile
+#-renamesourcefileattribute SourceFile
+
+# Keep all umami module classes
+-keep class com.codeskraps.umami.** { *; }
+-keep class com.codeskraps.umami.di.** { *; }
+-keep class com.codeskraps.umami.domain.** { *; }
+
+# Keep specifically problematic classes
+-keep class com.codeskraps.umami.di.CoreUmamiModule_ProvidesAnalyticsRepositoryFactory { *; }
+-keep class com.codeskraps.umami.di.CoreUmamiModule_ProvidesDeviceIdRepositoryFactory { *; }
+-keep class com.codeskraps.umami.domain.AnalyticsRepository { *; }
+-keep class com.codeskraps.umami.domain.DeviceIdRepository { *; }
+
+# Java language APIs
+-dontwarn java.lang.invoke.StringConcatFactory

+ 18 - 0
feature/common/consumer-rules.pro

@@ -0,0 +1,18 @@
+# Keep all common module classes when consumed by other modules
+-keep class com.codeskraps.feature.common.** { *; }
+-keep class com.codeskraps.feature.common.di.** { *; }
+-keep class com.codeskraps.feature.common.dispatcher.** { *; }
+-keep class com.codeskraps.feature.common.mvi.** { *; }
+-keep class com.codeskraps.feature.common.navigation.** { *; }
+
+# Keep specifically the problematic classes
+-keep class com.codeskraps.feature.common.di.FeatureModule_ProvidesDispatcherProviderFactory { *; }
+-keep class com.codeskraps.feature.common.di.FeatureModule_ProvidesResourcesFactory { *; }
+-keep class com.codeskraps.feature.common.dispatcher.DispatcherProvider { *; }
+-keep class com.codeskraps.feature.common.mvi.StateReducerFlow { *; }
+-keep class com.codeskraps.feature.common.navigation.Screen$Geocoding { *; }
+-keep class com.codeskraps.feature.common.navigation.Screen$Map { *; }
+-keep class com.codeskraps.feature.common.navigation.Screen$Weather { *; }
+
+# Java language APIs
+-dontwarn java.lang.invoke.StringConcatFactory

+ 20 - 1
feature/common/proguard-rules.pro

@@ -18,4 +18,23 @@
 
 # If you keep the line number information, uncomment this to
 # hide the original source file name.
-#-renamesourcefileattribute SourceFile
+#-renamesourcefileattribute SourceFile
+
+# Keep all common module classes
+-keep class com.codeskraps.feature.common.** { *; }
+-keep class com.codeskraps.feature.common.di.** { *; }
+-keep class com.codeskraps.feature.common.dispatcher.** { *; }
+-keep class com.codeskraps.feature.common.mvi.** { *; }
+-keep class com.codeskraps.feature.common.navigation.** { *; }
+
+# Keep specifically the problematic classes
+-keep class com.codeskraps.feature.common.di.FeatureModule_ProvidesDispatcherProviderFactory { *; }
+-keep class com.codeskraps.feature.common.di.FeatureModule_ProvidesResourcesFactory { *; }
+-keep class com.codeskraps.feature.common.dispatcher.DispatcherProvider { *; }
+-keep class com.codeskraps.feature.common.mvi.StateReducerFlow { *; }
+-keep class com.codeskraps.feature.common.navigation.Screen$Geocoding { *; }
+-keep class com.codeskraps.feature.common.navigation.Screen$Map { *; }
+-keep class com.codeskraps.feature.common.navigation.Screen$Weather { *; }
+
+# Java language APIs
+-dontwarn java.lang.invoke.StringConcatFactory

+ 4 - 1
feature/geocoding/proguard-rules.pro

@@ -18,4 +18,7 @@
 
 # If you keep the line number information, uncomment this to
 # hide the original source file name.
-#-renamesourcefileattribute SourceFile
+#-renamesourcefileattribute SourceFile
+
+# Added to fix R8 warning for missing StringConcatFactory
+-dontwarn java.lang.invoke.StringConcatFactory

+ 4 - 2
feature/geocoding/src/main/java/com/codeskraps/feature/geocoding/di/FeatureModule.kt

@@ -5,16 +5,18 @@ import com.squareup.moshi.Moshi
 import dagger.Module
 import dagger.Provides
 import dagger.hilt.InstallIn
-import dagger.hilt.android.components.ViewModelComponent
+import dagger.hilt.components.SingletonComponent
 import retrofit2.Retrofit
 import retrofit2.converter.moshi.MoshiConverterFactory
 import retrofit2.create
+import javax.inject.Singleton
 
 @Module
-@InstallIn(ViewModelComponent::class)
+@InstallIn(SingletonComponent::class)
 object FeatureModule {
 
     @Provides
+    @Singleton
     fun providesGeocodingApi(): GeocodingApi {
         val moshi = Moshi.Builder()
             .build()

+ 4 - 2
feature/geocoding/src/main/java/com/codeskraps/feature/geocoding/di/RepositoryModule.kt

@@ -5,13 +5,15 @@ import com.codeskraps.feature.geocoding.repository.GeocodingRepository
 import dagger.Binds
 import dagger.Module
 import dagger.hilt.InstallIn
-import dagger.hilt.android.components.ViewModelComponent
+import dagger.hilt.components.SingletonComponent
+import javax.inject.Singleton
 
 @Module
-@InstallIn(ViewModelComponent::class)
+@InstallIn(SingletonComponent::class)
 abstract class RepositoryModule {
 
     @Binds
+    @Singleton
     abstract fun bindsGeocodingRepository(
         geocodingRepositoryImpl: GeocodingRepositoryImpl
     ): GeocodingRepository

+ 26 - 0
feature/maps/consumer-rules.pro

@@ -0,0 +1,26 @@
+# Keep all maps related classes when consumed by other modules
+-keep class com.codeskraps.maps.** { *; }
+-keep class com.codeskraps.maps.presentation.** { *; }
+-keep class com.codeskraps.maps.presentation.components.** { *; }
+-keep class com.codeskraps.maps.presentation.mvi.** { *; }
+
+# Keep specifically the problematic classes
+-keep class com.codeskraps.maps.presentation.MapViewModel { *; }
+-keep class com.codeskraps.maps.presentation.MapViewModel_HiltModules$KeyModule { *; }
+-keep class com.codeskraps.maps.presentation.components.MapScreenKt { *; }
+-keep class com.codeskraps.maps.presentation.mvi.MapEvent { *; }
+-keep class com.codeskraps.maps.presentation.mvi.MapState { *; }
+
+# Keep dependencies
+-keep class com.codeskraps.core.local.domain.model.** { *; }
+-keep class com.codeskraps.core.local.domain.repository.** { *; }
+-keep class com.codeskraps.core.location.domain.** { *; }
+-keep class com.codeskraps.umami.domain.** { *; }
+
+# Dontwarn rules
+-dontwarn com.codeskraps.core.local.domain.model.GeoLocation
+-dontwarn com.codeskraps.core.local.domain.repository.LocalGeocodingRepository
+-dontwarn com.codeskraps.core.local.domain.repository.LocalResourceRepository
+-dontwarn com.codeskraps.core.location.domain.LocationTracker
+-dontwarn com.codeskraps.umami.domain.AnalyticsRepository
+-dontwarn java.lang.invoke.StringConcatFactory

+ 28 - 1
feature/maps/proguard-rules.pro

@@ -18,4 +18,31 @@
 
 # If you keep the line number information, uncomment this to
 # hide the original source file name.
-#-renamesourcefileattribute SourceFile
+#-renamesourcefileattribute SourceFile
+
+# Keep all maps related classes
+-keep class com.codeskraps.maps.** { *; }
+-keep class com.codeskraps.maps.presentation.** { *; }
+-keep class com.codeskraps.maps.presentation.components.** { *; }
+-keep class com.codeskraps.maps.presentation.mvi.** { *; }
+
+# Keep specifically the problematic classes
+-keep class com.codeskraps.maps.presentation.MapViewModel { *; }
+-keep class com.codeskraps.maps.presentation.MapViewModel_HiltModules$KeyModule { *; }
+-keep class com.codeskraps.maps.presentation.components.MapScreenKt { *; }
+-keep class com.codeskraps.maps.presentation.mvi.MapEvent { *; }
+-keep class com.codeskraps.maps.presentation.mvi.MapState { *; }
+
+# Keep dependencies
+-keep class com.codeskraps.core.local.domain.model.** { *; }
+-keep class com.codeskraps.core.local.domain.repository.** { *; }
+-keep class com.codeskraps.core.location.domain.** { *; }
+-keep class com.codeskraps.umami.domain.** { *; }
+
+# Dontwarn rules
+-dontwarn com.codeskraps.core.local.domain.model.GeoLocation
+-dontwarn com.codeskraps.core.local.domain.repository.LocalGeocodingRepository
+-dontwarn com.codeskraps.core.local.domain.repository.LocalResourceRepository
+-dontwarn com.codeskraps.core.location.domain.LocationTracker
+-dontwarn com.codeskraps.umami.domain.AnalyticsRepository
+-dontwarn java.lang.invoke.StringConcatFactory

+ 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
 }