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 {