Fix: try to correct update basket
This commit is contained in:
parent
37c45d0cf7
commit
db454fe540
@ -12,6 +12,7 @@ import com.example.android_programming.model.BasketWithSneakers
|
||||
import com.example.android_programming.model.Sneaker
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.runBlocking
|
||||
|
||||
class RestBasketRepository(
|
||||
private var service: BackendService
|
||||
@ -20,10 +21,10 @@ class RestBasketRepository(
|
||||
service.createBasketSneaker(basketSneaker.toBasketSneakerRemote())
|
||||
}
|
||||
|
||||
override suspend fun getBasketWithSneakers(id: Int): Flow<List<Sneaker>> {
|
||||
override fun getBasketWithSneakers(id: Int): Flow<List<Sneaker>> = runBlocking {
|
||||
val sneakersRemoteList = service.getUserBasketSneakers(id)
|
||||
val sneakersList = sneakersRemoteList.map { it.toSneaker() }
|
||||
return flowOf(sneakersList.toList())
|
||||
flowOf(sneakersList.toList())
|
||||
}
|
||||
|
||||
override suspend fun getUserBasketId(id: Int): Int {
|
||||
|
@ -11,7 +11,7 @@ import kotlinx.coroutines.flow.Flow
|
||||
|
||||
interface BasketRepository {
|
||||
suspend fun insertBasketSneaker(basketSneaker: BasketSneakers)
|
||||
suspend fun getBasketWithSneakers(id: Int): Flow<List<Sneaker>>
|
||||
fun getBasketWithSneakers(id: Int): Flow<List<Sneaker>>
|
||||
suspend fun getUserBasketId(id: Int): Int
|
||||
// fun getAllBasket(): Flow<List<Basket>>
|
||||
// suspend fun delete(basket: Basket)
|
||||
|
@ -25,9 +25,6 @@ class BasketViewModel(private val basketRepository: BasketRepository): ViewModel
|
||||
|
||||
private val _quantityStateMap = mutableMapOf<Int, MutableStateFlow<Int>>()
|
||||
|
||||
private val _sneakerList = MutableStateFlow<List<Sneaker>>(emptyList())
|
||||
val sneakerList: StateFlow<List<Sneaker>> = _sneakerList.asStateFlow()
|
||||
|
||||
fun getQuantityState(basketId: Int, sneakerId: Int): StateFlow<Int> {
|
||||
val quantityStateFlow = _quantityStateMap.getOrPut(sneakerId) {
|
||||
MutableStateFlow(0)
|
||||
@ -53,12 +50,8 @@ class BasketViewModel(private val basketRepository: BasketRepository): ViewModel
|
||||
basketRepository.insertBasketSneaker(basketSneakers)
|
||||
}
|
||||
}
|
||||
fun fetchBasketSneakers(userId: Int) {
|
||||
viewModelScope.launch {
|
||||
basketRepository.getBasketWithSneakers(userId).collect {
|
||||
_sneakerList.emit(it)
|
||||
}
|
||||
}
|
||||
fun getBasketSneakers(userId: Int) : Flow<List<Sneaker>> {
|
||||
return basketRepository.getBasketWithSneakers(userId)
|
||||
}
|
||||
|
||||
suspend fun getUserBasketId(userId: Int) : Int{
|
||||
|
@ -100,11 +100,12 @@ fun CardSneaker(item: Sneaker, navController: NavHostController, basketViewModel
|
||||
if(user == null){
|
||||
navController.navigate("login")
|
||||
}else{
|
||||
runBlocking {
|
||||
launch(Dispatchers.Default) {
|
||||
basketViewModel.addToBasket(BasketSneakers(basketViewModel.getUserBasketId(user.userId!!), item.sneakerId!!, 1))
|
||||
}
|
||||
}
|
||||
basketViewModel.addToBasket(BasketSneakers(1, item.sneakerId!!, 1))
|
||||
// runBlocking {
|
||||
// launch(Dispatchers.Default) {
|
||||
// basketViewModel.addToBasket(BasketSneakers(basketViewModel.getUserBasketId(user.userId!!), item.sneakerId!!, 1))
|
||||
// }
|
||||
// }
|
||||
}
|
||||
},
|
||||
modifier = Modifier
|
||||
|
@ -85,11 +85,12 @@ fun CardSneakerLike(item: Sneaker, basketViewModel: BasketViewModel = viewModel(
|
||||
contentColor = Color.White
|
||||
),
|
||||
onClick = {
|
||||
runBlocking {
|
||||
launch(Dispatchers.Default) {
|
||||
basketViewModel.deleteSneakerFromBasket(basketViewModel.getUserBasketId(GlobalUser.getInstance().getUser()?.userId!!), item.sneakerId!!)
|
||||
}
|
||||
}
|
||||
basketViewModel.deleteSneakerFromBasket(1, item.sneakerId!!)
|
||||
// runBlocking {
|
||||
// launch(Dispatchers.Default) {
|
||||
// basketViewModel.deleteSneakerFromBasket(basketViewModel.getUserBasketId(GlobalUser.getInstance().getUser()?.userId!!), item.sneakerId!!)
|
||||
// }
|
||||
// }
|
||||
},
|
||||
modifier = Modifier
|
||||
.padding(end = 16.dp)
|
||||
|
@ -11,6 +11,7 @@ import androidx.compose.material.Button
|
||||
import androidx.compose.material.ButtonDefaults
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
@ -45,11 +46,10 @@ fun OrderScreen(navHostController: NavHostController, basketViewModel: BasketVie
|
||||
DeliveryAddress(orderViewModel)
|
||||
val userId = GlobalUser.getInstance().getUser()?.userId
|
||||
if (userId != null) {
|
||||
basketViewModel.fetchBasketSneakers(userId!!)
|
||||
val sneakerList: List<Sneaker>? = basketViewModel.sneakerList.collectAsState(null).value
|
||||
val sneakerList: List<Sneaker>? by basketViewModel.getBasketSneakers(userId).collectAsState(null)
|
||||
if (sneakerList != null) {
|
||||
orderViewModel.updateSelectedItems(sneakerList)
|
||||
ShoppingList(sneakerList)
|
||||
orderViewModel.updateSelectedItems(sneakerList!!)
|
||||
ShoppingList(sneakerList!!)
|
||||
SubTotal(orderViewModel)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user