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")
 | 
					@Entity(tableName = "favourites")
 | 
				
			||||||
data class Favourite(
 | 
					data class Favourite(
 | 
				
			||||||
    @PrimaryKey val id: Int,
 | 
					    @PrimaryKey val id: Int,
 | 
				
			||||||
    val name: String,
 | 
					    val name: String
 | 
				
			||||||
    val types: List<Type>,
 | 
					 | 
				
			||||||
    val sprites: Sprites
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -5,6 +5,7 @@ import androidx.room.Delete
 | 
				
			|||||||
import androidx.room.Insert
 | 
					import androidx.room.Insert
 | 
				
			||||||
import androidx.room.OnConflictStrategy
 | 
					import androidx.room.OnConflictStrategy
 | 
				
			||||||
import androidx.room.Query
 | 
					import androidx.room.Query
 | 
				
			||||||
 | 
					import kotlinx.coroutines.flow.Flow
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Dao
 | 
					@Dao
 | 
				
			||||||
interface FavouriteDao {
 | 
					interface FavouriteDao {
 | 
				
			||||||
@@ -15,5 +16,5 @@ interface FavouriteDao {
 | 
				
			|||||||
    suspend fun delete(favourite: Favourite)
 | 
					    suspend fun delete(favourite: Favourite)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Query("SELECT id FROM favourites")
 | 
					    @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.Icons
 | 
				
			||||||
import androidx.compose.material.icons.filled.Favorite
 | 
					import androidx.compose.material.icons.filled.Favorite
 | 
				
			||||||
import androidx.compose.material.icons.filled.Home
 | 
					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.FavoriteBorder
 | 
				
			||||||
import androidx.compose.material.icons.outlined.Home
 | 
					import androidx.compose.material.icons.outlined.Home
 | 
				
			||||||
import androidx.compose.material.icons.outlined.Person
 | 
					 | 
				
			||||||
import androidx.compose.material3.Icon
 | 
					import androidx.compose.material3.Icon
 | 
				
			||||||
import androidx.compose.material3.MaterialTheme
 | 
					import androidx.compose.material3.MaterialTheme
 | 
				
			||||||
import androidx.compose.material3.NavigationBar
 | 
					import androidx.compose.material3.NavigationBar
 | 
				
			||||||
@@ -32,6 +30,7 @@ import androidx.navigation.compose.NavHost
 | 
				
			|||||||
import androidx.navigation.compose.composable
 | 
					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.ui.pokesearch.PokeSearchViewModel
 | 
				
			||||||
import com.ti.mobpo.ui.screens.Favourites
 | 
					import com.ti.mobpo.ui.screens.Favourites
 | 
				
			||||||
import com.ti.mobpo.ui.screens.PokeSearchScreen
 | 
					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 = "")
 | 
					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.ViewModel
 | 
				
			||||||
import androidx.lifecycle.viewModelScope
 | 
					import androidx.lifecycle.viewModelScope
 | 
				
			||||||
@@ -1,7 +1,6 @@
 | 
				
			|||||||
package com.ti.mobpo.ui.screens
 | 
					package com.ti.mobpo.ui.screens
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import androidx.compose.foundation.Image
 | 
					import com.ti.mobpo.ui.pokesearch.PokeSearchViewModel
 | 
				
			||||||
import com.ti.mobpo.ui.PokeSearchViewModel
 | 
					 | 
				
			||||||
import androidx.compose.foundation.layout.Arrangement
 | 
					import androidx.compose.foundation.layout.Arrangement
 | 
				
			||||||
import androidx.compose.foundation.layout.Column
 | 
					import androidx.compose.foundation.layout.Column
 | 
				
			||||||
import androidx.compose.foundation.layout.Row
 | 
					import androidx.compose.foundation.layout.Row
 | 
				
			||||||
@@ -48,7 +47,6 @@ import coil.compose.AsyncImage
 | 
				
			|||||||
import coil.request.ImageRequest
 | 
					import coil.request.ImageRequest
 | 
				
			||||||
import com.ti.mobpo.capitalizeFirstLetterAfterHyphens
 | 
					import com.ti.mobpo.capitalizeFirstLetterAfterHyphens
 | 
				
			||||||
import com.ti.mobpo.ui.theme.MobileSecurityTheme
 | 
					import com.ti.mobpo.ui.theme.MobileSecurityTheme
 | 
				
			||||||
import java.util.Locale
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Composable
 | 
					@Composable
 | 
				
			||||||
fun PokeSearchScreen(pokeSearchViewModel: PokeSearchViewModel) {
 | 
					fun PokeSearchScreen(pokeSearchViewModel: PokeSearchViewModel) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user