Add repo, ..
This commit is contained in:
		
							
								
								
									
										16
									
								
								app/src/main/java/com/ti/mobpo/data/AppContainer.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								app/src/main/java/com/ti/mobpo/data/AppContainer.kt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
package com.ti.mobpo.data
 | 
			
		||||
 | 
			
		||||
import android.content.Context
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
interface AppContainer {
 | 
			
		||||
    val favouritesRepository: FavouritesRepository
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class AppDataContainer(private val context: Context) : AppContainer {
 | 
			
		||||
 | 
			
		||||
    override val favouritesRepository: FavouritesRepository by lazy {
 | 
			
		||||
        OfflineFavouritesRepository(PokemonDatabase.getDatabase(context).FavouriteDao())
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -8,7 +8,5 @@ import com.ti.mobpo.model.Type
 | 
			
		||||
@Entity(tableName = "favourites")
 | 
			
		||||
data class Favourite(
 | 
			
		||||
    @PrimaryKey val id: Int,
 | 
			
		||||
    val name: String,
 | 
			
		||||
    val types: List<Type>,
 | 
			
		||||
    val sprites: Sprites
 | 
			
		||||
    val name: String
 | 
			
		||||
)
 | 
			
		||||
@@ -5,6 +5,7 @@ import androidx.room.Delete
 | 
			
		||||
import androidx.room.Insert
 | 
			
		||||
import androidx.room.OnConflictStrategy
 | 
			
		||||
import androidx.room.Query
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
 | 
			
		||||
@Dao
 | 
			
		||||
interface FavouriteDao {
 | 
			
		||||
@@ -15,5 +16,5 @@ interface FavouriteDao {
 | 
			
		||||
    suspend fun delete(favourite: Favourite)
 | 
			
		||||
 | 
			
		||||
    @Query("SELECT id FROM favourites")
 | 
			
		||||
    suspend fun getAllFavoriteIds(): List<Int>
 | 
			
		||||
    fun getAllFavoriteIds(): Flow<List<Int>>
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										23
									
								
								app/src/main/java/com/ti/mobpo/data/FavouritesRepository.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								app/src/main/java/com/ti/mobpo/data/FavouritesRepository.kt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
package com.ti.mobpo.data
 | 
			
		||||
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Repository that provides insert, update, delete, and retrieve of [Item] from a given data source.
 | 
			
		||||
 */
 | 
			
		||||
interface FavouritesRepository {
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve all the items from the the given data source.
 | 
			
		||||
     */
 | 
			
		||||
    fun getAllFavoriteIds(): Flow<List<Int>>
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Insert item in the data source
 | 
			
		||||
     */
 | 
			
		||||
    suspend fun insertItem(item: Favourite)
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Delete item from the data source
 | 
			
		||||
     */
 | 
			
		||||
    suspend fun deleteItem(item: Favourite)
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,16 @@
 | 
			
		||||
package com.ti.mobpo.data
 | 
			
		||||
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
 | 
			
		||||
class OfflineFavouritesRepository(private val favouriteDao: FavouriteDao) : FavouritesRepository {
 | 
			
		||||
    override fun getAllFavoriteIds(): Flow<List<Int>> {
 | 
			
		||||
        return favouriteDao.getAllFavoriteIds()
 | 
			
		||||
    }
 | 
			
		||||
    override suspend fun insertItem(item: Favourite) {
 | 
			
		||||
        favouriteDao.insert(item)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override suspend fun deleteItem(item: Favourite) {
 | 
			
		||||
        favouriteDao.delete(item)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -8,10 +8,8 @@ import androidx.compose.foundation.layout.padding
 | 
			
		||||
import androidx.compose.material.icons.Icons
 | 
			
		||||
import androidx.compose.material.icons.filled.Favorite
 | 
			
		||||
import androidx.compose.material.icons.filled.Home
 | 
			
		||||
import androidx.compose.material.icons.filled.Person
 | 
			
		||||
import androidx.compose.material.icons.outlined.FavoriteBorder
 | 
			
		||||
import androidx.compose.material.icons.outlined.Home
 | 
			
		||||
import androidx.compose.material.icons.outlined.Person
 | 
			
		||||
import androidx.compose.material3.Icon
 | 
			
		||||
import androidx.compose.material3.MaterialTheme
 | 
			
		||||
import androidx.compose.material3.NavigationBar
 | 
			
		||||
@@ -32,6 +30,7 @@ import androidx.navigation.compose.NavHost
 | 
			
		||||
import androidx.navigation.compose.composable
 | 
			
		||||
import androidx.navigation.compose.currentBackStackEntryAsState
 | 
			
		||||
import androidx.navigation.compose.rememberNavController
 | 
			
		||||
import com.ti.mobpo.ui.pokesearch.PokeSearchViewModel
 | 
			
		||||
import com.ti.mobpo.ui.screens.Favourites
 | 
			
		||||
import com.ti.mobpo.ui.screens.PokeSearchScreen
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,3 @@
 | 
			
		||||
package com.ti.mobpo.ui
 | 
			
		||||
package com.ti.mobpo.ui.pokesearch
 | 
			
		||||
 | 
			
		||||
data class PokeSearchUiState(val searchQuery: String = "")
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
package com.ti.mobpo.ui
 | 
			
		||||
package com.ti.mobpo.ui.pokesearch
 | 
			
		||||
 | 
			
		||||
import androidx.lifecycle.ViewModel
 | 
			
		||||
import androidx.lifecycle.viewModelScope
 | 
			
		||||
@@ -1,7 +1,6 @@
 | 
			
		||||
package com.ti.mobpo.ui.screens
 | 
			
		||||
 | 
			
		||||
import androidx.compose.foundation.Image
 | 
			
		||||
import com.ti.mobpo.ui.PokeSearchViewModel
 | 
			
		||||
import com.ti.mobpo.ui.pokesearch.PokeSearchViewModel
 | 
			
		||||
import androidx.compose.foundation.layout.Arrangement
 | 
			
		||||
import androidx.compose.foundation.layout.Column
 | 
			
		||||
import androidx.compose.foundation.layout.Row
 | 
			
		||||
@@ -48,7 +47,6 @@ import coil.compose.AsyncImage
 | 
			
		||||
import coil.request.ImageRequest
 | 
			
		||||
import com.ti.mobpo.capitalizeFirstLetterAfterHyphens
 | 
			
		||||
import com.ti.mobpo.ui.theme.MobileSecurityTheme
 | 
			
		||||
import java.util.Locale
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun PokeSearchScreen(pokeSearchViewModel: PokeSearchViewModel) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user