diff --git a/app/src/main/java/com/example/android_programming/api/repository/RestBasketRepository.kt b/app/src/main/java/com/example/android_programming/api/repository/RestBasketRepository.kt index 70dd452..f0e10f8 100644 --- a/app/src/main/java/com/example/android_programming/api/repository/RestBasketRepository.kt +++ b/app/src/main/java/com/example/android_programming/api/repository/RestBasketRepository.kt @@ -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> { + override fun getBasketWithSneakers(id: Int): Flow> = 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 { diff --git a/app/src/main/java/com/example/android_programming/businessLogic/repo/BasketRepository.kt b/app/src/main/java/com/example/android_programming/businessLogic/repo/BasketRepository.kt index b5e3a05..93129f8 100644 --- a/app/src/main/java/com/example/android_programming/businessLogic/repo/BasketRepository.kt +++ b/app/src/main/java/com/example/android_programming/businessLogic/repo/BasketRepository.kt @@ -11,7 +11,7 @@ import kotlinx.coroutines.flow.Flow interface BasketRepository { suspend fun insertBasketSneaker(basketSneaker: BasketSneakers) - suspend fun getBasketWithSneakers(id: Int): Flow> + fun getBasketWithSneakers(id: Int): Flow> suspend fun getUserBasketId(id: Int): Int // fun getAllBasket(): Flow> // suspend fun delete(basket: Basket) diff --git a/app/src/main/java/com/example/android_programming/businessLogic/vmodel/BasketViewModel.kt b/app/src/main/java/com/example/android_programming/businessLogic/vmodel/BasketViewModel.kt index 8e65f51..f3c4748 100644 --- a/app/src/main/java/com/example/android_programming/businessLogic/vmodel/BasketViewModel.kt +++ b/app/src/main/java/com/example/android_programming/businessLogic/vmodel/BasketViewModel.kt @@ -25,9 +25,6 @@ class BasketViewModel(private val basketRepository: BasketRepository): ViewModel private val _quantityStateMap = mutableMapOf>() - private val _sneakerList = MutableStateFlow>(emptyList()) - val sneakerList: StateFlow> = _sneakerList.asStateFlow() - fun getQuantityState(basketId: Int, sneakerId: Int): StateFlow { 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> { + return basketRepository.getBasketWithSneakers(userId) } suspend fun getUserBasketId(userId: Int) : Int{ diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/SneakerRecyclerView/CardSneaker.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/SneakerRecyclerView/CardSneaker.kt index 4a76ec2..de99854 100644 --- a/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/SneakerRecyclerView/CardSneaker.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/HomeScreen/SneakerRecyclerView/CardSneaker.kt @@ -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 diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/CardSneaker.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/CardSneaker.kt index 6509fac..e10f76f 100644 --- a/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/CardSneaker.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/CardSneaker.kt @@ -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) diff --git a/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/OrderScreen.kt b/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/OrderScreen.kt index b29af12..75902b3 100644 --- a/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/OrderScreen.kt +++ b/app/src/main/java/com/example/android_programming/composeui/Screens/OrderScreen/OrderScreen.kt @@ -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? = basketViewModel.sneakerList.collectAsState(null).value + val sneakerList: List? by basketViewModel.getBasketSneakers(userId).collectAsState(null) if (sneakerList != null) { - orderViewModel.updateSelectedItems(sneakerList) - ShoppingList(sneakerList) + orderViewModel.updateSelectedItems(sneakerList!!) + ShoppingList(sneakerList!!) SubTotal(orderViewModel) } }