1
0

2 Коммитууд 38809d31cf ... e7da11a5b3

Эзэн SHA1 Мессеж Огноо
  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 сар өмнө
  Carles Sentis c72af26fe7 Refactor MapViewModel and MapScreen to remove NavigateUp event handling 1 сар өмнө

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