Fix a bunch of stupid fckn issues that make my life hard
This commit is contained in:
		@@ -25,6 +25,7 @@ android {
 | 
			
		||||
        release {
 | 
			
		||||
            isMinifyEnabled = false
 | 
			
		||||
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
 | 
			
		||||
            signingConfig = signingConfigs.getByName("debug")
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    compileOptions {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,11 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools">
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    package="com.ti.mobpo">
 | 
			
		||||
 | 
			
		||||
    <uses-permission android:name="android.permission.INTERNET" />
 | 
			
		||||
 | 
			
		||||
    <application
 | 
			
		||||
        android:name=".PokeSearch"
 | 
			
		||||
        android:allowBackup="true"
 | 
			
		||||
        android:enableOnBackInvokedCallback="true"
 | 
			
		||||
        android:dataExtractionRules="@xml/data_extraction_rules"
 | 
			
		||||
@@ -15,6 +16,8 @@
 | 
			
		||||
        android:supportsRtl="true"
 | 
			
		||||
        android:theme="@style/Theme.MobileSecurity"
 | 
			
		||||
        tools:targetApi="31">
 | 
			
		||||
 | 
			
		||||
        <!-- Specify your main activity here -->
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".MainActivity"
 | 
			
		||||
            android:exported="true"
 | 
			
		||||
@@ -28,4 +31,4 @@
 | 
			
		||||
        </activity>
 | 
			
		||||
    </application>
 | 
			
		||||
 | 
			
		||||
</manifest>
 | 
			
		||||
</manifest>
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -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<PokeSearchViewModel>(factory = AppViewModelProvider.Factory)
 | 
			
		||||
    val favoritesVM = viewModel<FavouritesViewModel>(factory = AppViewModelProvider.Factory)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    Scaffold (
 | 
			
		||||
        bottomBar = {
 | 
			
		||||
            NavigationBar {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user