Fix a bunch of stupid fckn issues that make my life hard
This commit is contained in:
		@@ -25,6 +25,7 @@ android {
 | 
				
			|||||||
        release {
 | 
					        release {
 | 
				
			||||||
            isMinifyEnabled = false
 | 
					            isMinifyEnabled = false
 | 
				
			||||||
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
 | 
					            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
 | 
				
			||||||
 | 
					            signingConfig = signingConfigs.getByName("debug")
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    compileOptions {
 | 
					    compileOptions {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,11 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="utf-8"?>
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 | 
					<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" />
 | 
					    <uses-permission android:name="android.permission.INTERNET" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <application
 | 
					    <application
 | 
				
			||||||
        android:name=".PokeSearch"
 | 
					 | 
				
			||||||
        android:allowBackup="true"
 | 
					        android:allowBackup="true"
 | 
				
			||||||
        android:enableOnBackInvokedCallback="true"
 | 
					        android:enableOnBackInvokedCallback="true"
 | 
				
			||||||
        android:dataExtractionRules="@xml/data_extraction_rules"
 | 
					        android:dataExtractionRules="@xml/data_extraction_rules"
 | 
				
			||||||
@@ -15,6 +16,8 @@
 | 
				
			|||||||
        android:supportsRtl="true"
 | 
					        android:supportsRtl="true"
 | 
				
			||||||
        android:theme="@style/Theme.MobileSecurity"
 | 
					        android:theme="@style/Theme.MobileSecurity"
 | 
				
			||||||
        tools:targetApi="31">
 | 
					        tools:targetApi="31">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <!-- Specify your main activity here -->
 | 
				
			||||||
        <activity
 | 
					        <activity
 | 
				
			||||||
            android:name=".MainActivity"
 | 
					            android:name=".MainActivity"
 | 
				
			||||||
            android:exported="true"
 | 
					            android:exported="true"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,29 +1,33 @@
 | 
				
			|||||||
package com.ti.mobpo
 | 
					package com.ti.mobpo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import androidx.lifecycle.ViewModelProvider
 | 
					 | 
				
			||||||
import androidx.lifecycle.viewmodel.CreationExtras
 | 
					 | 
				
			||||||
import androidx.lifecycle.viewmodel.initializer
 | 
					import androidx.lifecycle.viewmodel.initializer
 | 
				
			||||||
import androidx.lifecycle.viewmodel.viewModelFactory
 | 
					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.FavouritesViewModel
 | 
				
			||||||
import com.ti.mobpo.ui.viewmodels.PokeSearchViewModel
 | 
					import com.ti.mobpo.ui.viewmodels.PokeSearchViewModel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
object AppViewModelProvider {
 | 
					object AppViewModelProvider {
 | 
				
			||||||
    val Factory = viewModelFactory {
 | 
					    lateinit var appContainer: AppContainer
 | 
				
			||||||
        initializer {
 | 
					    lateinit var featureManager: FeatureManager
 | 
				
			||||||
            PokeSearchViewModel(
 | 
					 | 
				
			||||||
                pokesearchApplication().appContainer.favouritesRepository
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fun initialize(appContainer: AppContainer, featureManager: FeatureManager) {
 | 
				
			||||||
 | 
					        this.appContainer = appContainer
 | 
				
			||||||
 | 
					        this.featureManager = featureManager
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    val Factory = viewModelFactory {
 | 
				
			||||||
 | 
					        initializer { ->
 | 
				
			||||||
 | 
					            PokeSearchViewModel(
 | 
				
			||||||
 | 
					                appContainer.favouritesRepository
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        initializer {
 | 
					        initializer { ->
 | 
				
			||||||
            FavouritesViewModel(
 | 
					            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 android.os.Bundle
 | 
				
			||||||
import androidx.activity.ComponentActivity
 | 
					import androidx.activity.ComponentActivity
 | 
				
			||||||
import androidx.activity.compose.setContent
 | 
					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.Navigation
 | 
				
			||||||
import com.ti.mobpo.ui.theme.MobileSecurityTheme
 | 
					import com.ti.mobpo.ui.theme.MobileSecurityTheme
 | 
				
			||||||
 | 
					import com.ti.mobpo.ui.util.FeatureManager
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MainActivity : ComponentActivity() {
 | 
					class MainActivity : ComponentActivity() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    lateinit var appContainer: AppContainer
 | 
				
			||||||
 | 
					        private set
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    lateinit var featureManager: FeatureManager
 | 
				
			||||||
 | 
					        private set
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
 | 
					    @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
 | 
				
			||||||
    override fun onCreate(savedInstanceState: Bundle?) {
 | 
					    override fun onCreate(savedInstanceState: Bundle?) {
 | 
				
			||||||
        super.onCreate(savedInstanceState)
 | 
					        super.onCreate(savedInstanceState)
 | 
				
			||||||
        setContent {
 | 
					        setContent {
 | 
				
			||||||
            MobileSecurityTheme {
 | 
					            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.currentBackStackEntryAsState
 | 
				
			||||||
import androidx.navigation.compose.rememberNavController
 | 
					import androidx.navigation.compose.rememberNavController
 | 
				
			||||||
import com.ti.mobpo.AppViewModelProvider
 | 
					import com.ti.mobpo.AppViewModelProvider
 | 
				
			||||||
 | 
					import com.ti.mobpo.MainActivity
 | 
				
			||||||
import com.ti.mobpo.ui.screens.FavoritesScreen
 | 
					import com.ti.mobpo.ui.screens.FavoritesScreen
 | 
				
			||||||
import com.ti.mobpo.ui.screens.PokeSearchScreen
 | 
					import com.ti.mobpo.ui.screens.PokeSearchScreen
 | 
				
			||||||
import com.ti.mobpo.ui.viewmodels.FavouritesViewModel
 | 
					import com.ti.mobpo.ui.viewmodels.FavouritesViewModel
 | 
				
			||||||
import com.ti.mobpo.ui.viewmodels.PokeSearchViewModel
 | 
					import com.ti.mobpo.ui.viewmodels.PokeSearchViewModel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Composable
 | 
					@Composable
 | 
				
			||||||
fun Navigation() {
 | 
					fun Navigation(activity: MainActivity) {
 | 
				
			||||||
    val items = listOf(
 | 
					    val items = listOf(
 | 
				
			||||||
        BottomNavigationItem(
 | 
					        BottomNavigationItem(
 | 
				
			||||||
            title = "Home",
 | 
					            title = "Home",
 | 
				
			||||||
@@ -66,6 +67,8 @@ fun Navigation() {
 | 
				
			|||||||
    val pokeSearchVM = viewModel<PokeSearchViewModel>(factory = AppViewModelProvider.Factory)
 | 
					    val pokeSearchVM = viewModel<PokeSearchViewModel>(factory = AppViewModelProvider.Factory)
 | 
				
			||||||
    val favoritesVM = viewModel<FavouritesViewModel>(factory = AppViewModelProvider.Factory)
 | 
					    val favoritesVM = viewModel<FavouritesViewModel>(factory = AppViewModelProvider.Factory)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Scaffold (
 | 
					    Scaffold (
 | 
				
			||||||
        bottomBar = {
 | 
					        bottomBar = {
 | 
				
			||||||
            NavigationBar {
 | 
					            NavigationBar {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user