From fb7e7a1a43d543022956da6cd21dd97742cc5651 Mon Sep 17 00:00:00 2001 From: maxnes3 <112558334+maxnes3@users.noreply.github.com> Date: Sat, 9 Dec 2023 11:21:16 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B4=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mobileapp/components/ListContent.kt | 19 ++++++++++++-- .../example/mobileapp/screens/ViewScreens.kt | 25 +++++++++++-------- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/example/mobileapp/components/ListContent.kt b/app/src/main/java/com/example/mobileapp/components/ListContent.kt index 3b8b62e..95b1995 100644 --- a/app/src/main/java/com/example/mobileapp/components/ListContent.kt +++ b/app/src/main/java/com/example/mobileapp/components/ListContent.kt @@ -48,10 +48,12 @@ import com.example.mobileapp.database.entities.Mail import com.example.mobileapp.database.entities.Story import com.example.mobileapp.database.viewmodels.MobileAppViewModelProvider import com.example.mobileapp.database.viewmodels.StoryViewModel +import com.example.mobileapp.database.viewmodels.UserViewModel import com.example.mobileapp.ui.theme.BackgroundItem2 import com.example.mobileapp.ui.theme.ButtonColor1 import com.example.mobileapp.ui.theme.ButtonColor2 import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.collect import kotlinx.coroutines.withContext import java.text.SimpleDateFormat import java.util.Date @@ -193,11 +195,24 @@ fun DataListItemButton(label: String, backgroundColor: Color, textColor: Color, } @Composable -fun MailListItem(item: Mail, navController: NavHostController){ +fun MailListItem(item: Mail, navController: NavHostController, + userViewModel: UserViewModel = viewModel( + factory = MobileAppViewModelProvider.Factory + )) { val isExpanded = remember { mutableStateOf(false) } + val userName = remember { mutableStateOf("") } + + LaunchedEffect(Unit){ + userViewModel.getUser(item.userId).collect { + if (it != null) { + userName.value = it.email + } + } + } + Card( modifier = Modifier .fillMaxWidth() @@ -229,7 +244,7 @@ fun MailListItem(item: Mail, navController: NavHostController){ modifier = Modifier.padding(8.dp) ){ Text( - text = "item.username | ${dateFormat.format(Date(item.postdate!!))}", + text = "${userName.value} | ${dateFormat.format(Date(item.postdate!!))}", fontSize = 20.sp, fontWeight = FontWeight.Bold) Text(text = item.message) diff --git a/app/src/main/java/com/example/mobileapp/screens/ViewScreens.kt b/app/src/main/java/com/example/mobileapp/screens/ViewScreens.kt index 92a1d78..40009d8 100644 --- a/app/src/main/java/com/example/mobileapp/screens/ViewScreens.kt +++ b/app/src/main/java/com/example/mobileapp/screens/ViewScreens.kt @@ -13,6 +13,7 @@ import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.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.mutableStateOf @@ -105,21 +106,25 @@ fun MailViewScreen(navController: NavHostController, mailId: Int, )) { val context = LocalContext.current - val userId = remember { mutableStateOf(0) } val userName = remember { mutableStateOf("") } val photo = remember { mutableStateOf(BitmapFactory.decodeResource(context.resources, R.drawable.photoplaceholder)) } val message = remember { mutableStateOf("") } val postdate = remember { mutableStateOf(0) } - val mail by mailViewModel.getMail(mailId).collectAsState(null) - mail?.let { - userId.value = it.userId - message.value = it.message - postdate.value = it.postdate!! - val user by userViewModel.getUser(userId.value).collectAsState(null) - user?.let {data -> - photo.value = data.photo!! - userName.value = data.login + LaunchedEffect(Unit){ + mailViewModel.getMail(mailId).collect{ + if (it != null) { + message.value = it.message + postdate.value = it.postdate!! + userViewModel.getUser(it.userId).collect {user -> + if (user != null) { + if(user.photo != null) { + photo.value = user.photo + } + userName.value = user.email + } + } + } } }