diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 47d87af..f058314 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -25,6 +25,7 @@ android {
release {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
+ signingConfig = signingConfigs.getByName("debug")
}
}
compileOptions {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9a329ab..04e0139 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,10 +1,11 @@
+ xmlns:tools="http://schemas.android.com/tools"
+ package="com.ti.mobpo">
+
+
+
-
\ No newline at end of file
+
diff --git a/app/src/main/java/com/ti/mobpo/AppViewModelProvider.kt b/app/src/main/java/com/ti/mobpo/AppViewModelProvider.kt
index 81f6270..e7fb3dc 100644
--- a/app/src/main/java/com/ti/mobpo/AppViewModelProvider.kt
+++ b/app/src/main/java/com/ti/mobpo/AppViewModelProvider.kt
@@ -1,29 +1,33 @@
package com.ti.mobpo
-import androidx.lifecycle.ViewModelProvider
-import androidx.lifecycle.viewmodel.CreationExtras
import androidx.lifecycle.viewmodel.initializer
import androidx.lifecycle.viewmodel.viewModelFactory
+import com.ti.mobpo.data.AppContainer
+import com.ti.mobpo.ui.util.FeatureManager
import com.ti.mobpo.ui.viewmodels.FavouritesViewModel
import com.ti.mobpo.ui.viewmodels.PokeSearchViewModel
object AppViewModelProvider {
- val Factory = viewModelFactory {
- initializer {
- PokeSearchViewModel(
- pokesearchApplication().appContainer.favouritesRepository
- )
+ lateinit var appContainer: AppContainer
+ lateinit var featureManager: FeatureManager
+ fun initialize(appContainer: AppContainer, featureManager: FeatureManager) {
+ this.appContainer = appContainer
+ this.featureManager = featureManager
+ }
+
+ val Factory = viewModelFactory {
+ initializer { ->
+ PokeSearchViewModel(
+ appContainer.favouritesRepository
+ )
}
- initializer {
+ initializer { ->
FavouritesViewModel(
- pokesearchApplication().appContainer.favouritesRepository, pokesearchApplication().featureManager
+ appContainer.favouritesRepository,
+ featureManager
)
}
}
}
-
-fun CreationExtras.pokesearchApplication(): PokeSearch =
- (this[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY] as PokeSearch)
-
diff --git a/app/src/main/java/com/ti/mobpo/MainActivity.kt b/app/src/main/java/com/ti/mobpo/MainActivity.kt
index 3ee751e..392b834 100644
--- a/app/src/main/java/com/ti/mobpo/MainActivity.kt
+++ b/app/src/main/java/com/ti/mobpo/MainActivity.kt
@@ -4,17 +4,39 @@ import android.annotation.SuppressLint
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
+import com.ti.mobpo.data.AppContainer
+import com.ti.mobpo.data.AppDataContainer
import com.ti.mobpo.ui.Navigation
import com.ti.mobpo.ui.theme.MobileSecurityTheme
+import com.ti.mobpo.ui.util.FeatureManager
class MainActivity : ComponentActivity() {
+
+ lateinit var appContainer: AppContainer
+ private set
+
+ lateinit var featureManager: FeatureManager
+ private set
+
+
@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MobileSecurityTheme {
- Navigation()
+ Navigation(this@MainActivity)
}
}
+ appContainer = createAppContainer()
+ featureManager = createFeatrureManager()
+ AppViewModelProvider.initialize(appContainer, featureManager)
+ }
+
+ private fun createAppContainer(): AppContainer {
+ return AppDataContainer(this)
+ }
+
+ private fun createFeatrureManager(): FeatureManager {
+ return FeatureManager(this)
}
}
diff --git a/app/src/main/java/com/ti/mobpo/PokeSearch.kt b/app/src/main/java/com/ti/mobpo/PokeSearch.kt
deleted file mode 100644
index 953cb2a..0000000
--- a/app/src/main/java/com/ti/mobpo/PokeSearch.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.ti.mobpo
-
-import android.app.Application
-import com.ti.mobpo.data.AppContainer
-import com.ti.mobpo.data.AppDataContainer
-import com.ti.mobpo.ui.util.FeatureManager
-
-class PokeSearch : Application() {
- lateinit var appContainer: AppContainer
- private set
-
- lateinit var featureManager: FeatureManager
- private set
-
- override fun onCreate() {
- super.onCreate()
- appContainer = createAppContainer()
- featureManager = createFeatrureManager()
- }
-
- private fun createAppContainer(): AppContainer {
- return AppDataContainer(this)
- }
-
- private fun createFeatrureManager(): FeatureManager {
- return FeatureManager(this)
- }
-}
diff --git a/app/src/main/java/com/ti/mobpo/ui/Navigation.kt b/app/src/main/java/com/ti/mobpo/ui/Navigation.kt
index de389ca..9503d5c 100644
--- a/app/src/main/java/com/ti/mobpo/ui/Navigation.kt
+++ b/app/src/main/java/com/ti/mobpo/ui/Navigation.kt
@@ -31,13 +31,14 @@ import androidx.navigation.compose.composable
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import com.ti.mobpo.AppViewModelProvider
+import com.ti.mobpo.MainActivity
import com.ti.mobpo.ui.screens.FavoritesScreen
import com.ti.mobpo.ui.screens.PokeSearchScreen
import com.ti.mobpo.ui.viewmodels.FavouritesViewModel
import com.ti.mobpo.ui.viewmodels.PokeSearchViewModel
@Composable
-fun Navigation() {
+fun Navigation(activity: MainActivity) {
val items = listOf(
BottomNavigationItem(
title = "Home",
@@ -66,6 +67,8 @@ fun Navigation() {
val pokeSearchVM = viewModel(factory = AppViewModelProvider.Factory)
val favoritesVM = viewModel(factory = AppViewModelProvider.Factory)
+
+
Scaffold (
bottomBar = {
NavigationBar {