Add repo, ..
This commit is contained in:
parent
6abf4100f2
commit
ec25b03e98
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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user