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,