From 17a45681230b5b3b7bffd0eeb1f0f79359987ed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B0=D1=88=D0=B8=D0=BD=20=D0=9C=D0=B0=D0=BA=D1=81?= =?UTF-8?q?=D0=B8=D0=BC?= <kashin20031984@mail.ru> Date: Sat, 23 Dec 2023 02:15:16 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BF=D0=B0,=20=D0=BF=D0=BE=D1=84=D0=B8?= =?UTF-8?q?=D0=BA=D0=B8=D1=81=D0=B8=D0=BB=D0=B8=20=D0=BE=D1=82=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/myapplication/composeui/Cart.kt | 7 ++++-- .../composeui/navigation/MainNavbar.kt | 2 +- .../entities/composeui/CartViewModel.kt | 12 +++++----- server/data.json | 23 +++++++++++++++++-- 4 files changed, 33 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/example/myapplication/composeui/Cart.kt b/app/src/main/java/com/example/myapplication/composeui/Cart.kt index 261cb4e..5e49ff1 100644 --- a/app/src/main/java/com/example/myapplication/composeui/Cart.kt +++ b/app/src/main/java/com/example/myapplication/composeui/Cart.kt @@ -55,6 +55,7 @@ import com.example.myapplication.R import com.example.myapplication.database.entities.composeui.AppViewModelProvider import com.example.myapplication.database.entities.composeui.CartUiState import com.example.myapplication.database.entities.composeui.CartViewModel +import com.example.myapplication.database.entities.composeui.CurrentUserViewModel import com.example.myapplication.database.entities.model.Item import com.example.myapplication.database.entities.model.ItemFromCart import com.example.myapplication.ui.theme.PmudemoTheme @@ -64,13 +65,15 @@ import org.threeten.bp.format.DateTimeFormatter @Composable fun Cart( - viewModel: CartViewModel = viewModel(factory = AppViewModelProvider.Factory) + viewModel: CartViewModel = viewModel(factory = AppViewModelProvider.Factory), + currentUserViewModel: CurrentUserViewModel = viewModel(factory = AppViewModelProvider.Factory) ) { val coroutineScope = rememberCoroutineScope() val cartUiState = viewModel.cartUiState + var getUser by remember { mutableStateOf(currentUserViewModel.user) } LaunchedEffect(Unit) { - viewModel.refreshState() + getUser?.uid?.let { viewModel.refreshState(it) } } Cart( diff --git a/app/src/main/java/com/example/myapplication/composeui/navigation/MainNavbar.kt b/app/src/main/java/com/example/myapplication/composeui/navigation/MainNavbar.kt index 99fd961..adb55ed 100644 --- a/app/src/main/java/com/example/myapplication/composeui/navigation/MainNavbar.kt +++ b/app/src/main/java/com/example/myapplication/composeui/navigation/MainNavbar.kt @@ -187,7 +187,7 @@ fun Navhost( ) { composable(Screen.BikeList.route) { BikeList(navController) } composable(Screen.RentList.route) { RentList(navController, 1) } - composable(Screen.Cart.route) { Cart() } + composable(Screen.Cart.route) { Cart(currentUserViewModel = currentUserViewModel) } composable(Screen.UserProfile.route) { UserProfile(isDarkTheme, dataStore, currentUserViewModel = currentUserViewModel) } composable( Screen.BikeEdit.route, diff --git a/app/src/main/java/com/example/myapplication/database/entities/composeui/CartViewModel.kt b/app/src/main/java/com/example/myapplication/database/entities/composeui/CartViewModel.kt index 40e3627..0319e44 100644 --- a/app/src/main/java/com/example/myapplication/database/entities/composeui/CartViewModel.kt +++ b/app/src/main/java/com/example/myapplication/database/entities/composeui/CartViewModel.kt @@ -21,12 +21,12 @@ class CartViewModel( private val rentItemRepository: RentItemRepository, private val userRepository: UserRepository, ) : ViewModel() { - private val userUid: Int = 1 + //private val userUid: Int = 1 var cartUiState by mutableStateOf(CartUiState()) private set - suspend fun refreshState() { - val cart = userRepository.getCartByUser(userUid) + suspend fun refreshState(userId: Int) { + val cart = userRepository.getCartByUser(userId) cartUiState = CartUiState(cart) } @@ -45,12 +45,12 @@ class CartViewModel( ) } userItemRepository.deleteUserItems(userId) - refreshState() + refreshState(userId) } suspend fun removeFromCart(user: Int, item: Item, count: Int = 1) { userItemRepository.deleteUserItem(UserItemCrossRef(user, item.uid, count)) - refreshState() + refreshState(user) } suspend fun updateFromCart(userId: Int, item: Item, count: Int, availableCount: Int) @@ -62,7 +62,7 @@ class CartViewModel( if (count > availableCount) return false userItemRepository.updateUserItem(UserItemCrossRef(userId, item.uid, count)) - refreshState() + refreshState(userId) return true } } diff --git a/server/data.json b/server/data.json index ab5cdff..ca08969 100644 --- a/server/data.json +++ b/server/data.json @@ -20,7 +20,19 @@ { "id": 2, "login": "hello", - "password": "hello" + "password": "hello", + "items": [ + { + "id": 6, + "count": 1, + "bikeId": 3 + }, + { + "id": 1, + "count": 1, + "bikeId": 1 + } + ] }, { "id": 3, @@ -45,7 +57,14 @@ { "id": 7, "login": "1", - "password": "1" + "password": "1", + "items": [ + { + "id": 4, + "count": 1, + "bikeId": 2 + } + ] }, { "id": 8,