Change names of database methods

This commit is contained in:
Joren 2024-04-30 00:05:02 +02:00
parent 3af9a606ae
commit 93b4d04587
Signed by untrusted user who does not match committer: Joren
GPG Key ID: 280E33DFBC0F1B55
4 changed files with 58 additions and 9 deletions

View File

@ -14,9 +14,8 @@ interface FavouriteDao {
@Delete
suspend fun delete(favourite: Favourite)
@Query("SELECT id FROM favourites")
fun getAllFavoriteIds(): Flow<List<Int>>
@Query("SELECT * from favourites ORDER BY id ASC")
fun getAllItems(): Flow<List<Favourite>>
@Query("SELECT EXISTS(SELECT 1 FROM favourites WHERE id = :id LIMIT 1)")
suspend fun isFavourite(id: Int): Boolean

View File

@ -9,7 +9,7 @@ interface FavouritesRepository {
/**
* Retrieve all the items from the the given data source.
*/
fun getAllFavoriteIds(): Flow<List<Int>>
fun getAllItems(): Flow<List<Favourite>>
/**
* Insert item in the data source

View File

@ -3,8 +3,8 @@ 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 fun getAllItems(): Flow<List<Favourite>> {
return favouriteDao.getAllItems()
}
override suspend fun insertItem(item: Favourite) {
favouriteDao.insert(item)

View File

@ -1,10 +1,60 @@
package com.ti.mobpo.ui.screens
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import com.ti.mobpo.AppViewModelProvider
import com.ti.mobpo.ui.viewmodels.FavouritesViewModel
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.grid.items
import androidx.compose.ui.Modifier
@Composable
fun Favourites() {
println("Favourites")
Text("Favourites Page")
fun FavoritesScreen(viewModel: FavouritesViewModel = viewModel(factory = AppViewModelProvider.Factory)) {
Favorites(viewModel)
}
@Composable
fun Favorites(favoritesViewModel: FavouritesViewModel) {
val favorites by favoritesViewModel.pokemonDetails.collectAsState()
favoritesViewModel.loadFavourites()
Column(
verticalArrangement = Arrangement.Top,
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier
.fillMaxSize()
.padding(20.dp)
) {
Spacer(modifier = Modifier.height(16.dp))
favorites?.let { favoritesList ->
if (favoritesList.isNotEmpty()) {
LazyVerticalGrid(
columns = GridCells.Adaptive(150.dp),
verticalArrangement = Arrangement.spacedBy(8.dp),
horizontalArrangement = Arrangement.spacedBy(8.dp)
) {
items(items = favoritesList, key = { pokemon -> pokemon.id }) { pokemon ->
PokemonCard(pokemon, toggleFavorite = { pokemonId ->
favoritesViewModel.toggleFavorite(pokemonId)
})
}
}
} else {
Text("No favorites found")
}
}
}
}