From 1c11696326c612743ced7c937977eda32b4b4179 Mon Sep 17 00:00:00 2001 From: Taqtile Date: Mon, 16 Sep 2024 14:52:13 -0300 Subject: [PATCH 1/6] title component --- .../example/greetingcard/view/LoginScreen.kt | 14 ++++------ .../greetingcard/view/NewUserScreen.kt | 4 +-- .../greetingcard/view/component/TitleH1.kt | 27 +++++++++++++++++++ 3 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 app/src/main/java/com/example/greetingcard/view/component/TitleH1.kt diff --git a/app/src/main/java/com/example/greetingcard/view/LoginScreen.kt b/app/src/main/java/com/example/greetingcard/view/LoginScreen.kt index 647d162..43cc773 100644 --- a/app/src/main/java/com/example/greetingcard/view/LoginScreen.kt +++ b/app/src/main/java/com/example/greetingcard/view/LoginScreen.kt @@ -1,5 +1,7 @@ package com.example.greetingcard.view +import android.os.Build +import androidx.annotation.RequiresApi import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -13,7 +15,6 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @@ -21,8 +22,10 @@ import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavHostController import com.example.greetingcard.view.component.InputFields import com.example.greetingcard.view.component.ShowErrors +import com.example.greetingcard.view.component.TitleH1 import com.example.greetingcard.viewModel.LoginViewModel +@RequiresApi(Build.VERSION_CODES.O) @Composable fun LoginScreen(navController: NavHostController) { val viewModel: LoginViewModel = viewModel() @@ -33,7 +36,7 @@ fun LoginScreen(navController: NavHostController) { .padding(innerPadding) ) { Spacer(modifier = Modifier.height(24.dp)) - Title() + TitleH1(title = "Bem vindo(a) à Taqtile!") Spacer(modifier = Modifier.height(48.dp)) InputFields( viewModel.emailState, @@ -75,13 +78,6 @@ fun LoginScreen(navController: NavHostController) { } } -@Composable -private fun Title() { - Text( - fontWeight = FontWeight.Bold, fontSize = 24.sp, text = "Bem vindo(a) à Taqtile!" - ) -} - @Composable private fun LoginButton(onClick: () -> Unit) { Button(onClick = onClick, modifier = Modifier.fillMaxWidth()) { diff --git a/app/src/main/java/com/example/greetingcard/view/NewUserScreen.kt b/app/src/main/java/com/example/greetingcard/view/NewUserScreen.kt index e4f13cc..87b69e7 100644 --- a/app/src/main/java/com/example/greetingcard/view/NewUserScreen.kt +++ b/app/src/main/java/com/example/greetingcard/view/NewUserScreen.kt @@ -22,7 +22,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @@ -31,6 +30,7 @@ import androidx.navigation.NavHostController import com.example.greetingcard.model.Roles import com.example.greetingcard.view.component.InputFields import com.example.greetingcard.view.component.ShowErrors +import com.example.greetingcard.view.component.TitleH1 import com.example.greetingcard.viewModel.NewUserViewModel @RequiresApi(Build.VERSION_CODES.O) @@ -57,7 +57,7 @@ private fun NewUserForm(navController: NavHostController) { Column( horizontalAlignment = Alignment.CenterHorizontally, ) { - Text(fontWeight = FontWeight.Bold, fontSize = 24.sp, text = "Novo usuário") + TitleH1(title = "Novo usuário") Spacer(modifier = Modifier.height(12.dp)) InputFields( viewModel.nameState, diff --git a/app/src/main/java/com/example/greetingcard/view/component/TitleH1.kt b/app/src/main/java/com/example/greetingcard/view/component/TitleH1.kt new file mode 100644 index 0000000..1d1d97a --- /dev/null +++ b/app/src/main/java/com/example/greetingcard/view/component/TitleH1.kt @@ -0,0 +1,27 @@ +package com.example.greetingcard.view.component + +import android.print.PrintAttributes +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Composable +fun TitleH1(title: String) { + Box( + modifier = Modifier + .padding(top = 20.dp, bottom = 20.dp) + ) { + Text( + text = title, + fontSize = 24.sp, + fontWeight = FontWeight.Bold, + color = Color.Black + ) + } +} \ No newline at end of file From 7b79ba0d5a727da2e31c0bdc8f2ba7843ffdd8ff Mon Sep 17 00:00:00 2001 From: Taqtile Date: Mon, 16 Sep 2024 15:21:29 -0300 Subject: [PATCH 2/6] form and caption components --- .../example/greetingcard/view/LoginScreen.kt | 12 ++----- .../greetingcard/view/NewUserScreen.kt | 12 +++---- .../view/component/ButtonDefault.kt | 31 +++++++++++++++++++ .../view/component/InputFields.kt | 27 ++++++++++++++-- .../greetingcard/view/component/ShowErrors.kt | 4 +++ 5 files changed, 65 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/com/example/greetingcard/view/component/ButtonDefault.kt diff --git a/app/src/main/java/com/example/greetingcard/view/LoginScreen.kt b/app/src/main/java/com/example/greetingcard/view/LoginScreen.kt index 43cc773..adea52c 100644 --- a/app/src/main/java/com/example/greetingcard/view/LoginScreen.kt +++ b/app/src/main/java/com/example/greetingcard/view/LoginScreen.kt @@ -8,18 +8,16 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Scaffold -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavHostController +import com.example.greetingcard.view.component.ButtonDefault import com.example.greetingcard.view.component.InputFields import com.example.greetingcard.view.component.ShowErrors import com.example.greetingcard.view.component.TitleH1 @@ -56,7 +54,7 @@ fun LoginScreen(navController: NavHostController) { ShowErrors(viewModel.passwordErrorMessages) Spacer(modifier = Modifier.height(36.dp)) if (!viewModel.isLoading) { - LoginButton(onClick = { + ButtonDefault("Entrar", onClick = { viewModel.validateAndSetEmailErrors() viewModel.validateAndSetPasswordErrors() if (viewModel.emailErrorMessages.isEmpty() && viewModel.passwordErrorMessages.isEmpty()) { @@ -78,9 +76,3 @@ fun LoginScreen(navController: NavHostController) { } } -@Composable -private fun LoginButton(onClick: () -> Unit) { - Button(onClick = onClick, modifier = Modifier.fillMaxWidth()) { - Text(fontSize = 20.sp, text = "Entrar") - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/greetingcard/view/NewUserScreen.kt b/app/src/main/java/com/example/greetingcard/view/NewUserScreen.kt index 87b69e7..197003c 100644 --- a/app/src/main/java/com/example/greetingcard/view/NewUserScreen.kt +++ b/app/src/main/java/com/example/greetingcard/view/NewUserScreen.kt @@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.material3.Button import androidx.compose.material3.RadioButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Text @@ -28,6 +27,7 @@ import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavHostController import com.example.greetingcard.model.Roles +import com.example.greetingcard.view.component.ButtonDefault import com.example.greetingcard.view.component.InputFields import com.example.greetingcard.view.component.ShowErrors import com.example.greetingcard.view.component.TitleH1 @@ -107,7 +107,8 @@ private fun NewUserForm(navController: NavHostController) { ShowErrors(viewModel.roleErrorMessages) Spacer(modifier = Modifier.height(12.dp)) - Button( + ButtonDefault( + buttonText = "Cadastrar", onClick = { viewModel.validateAndSetAllErrors() viewModel.addNewUser() @@ -122,12 +123,7 @@ private fun NewUserForm(navController: NavHostController) { } }, - modifier = Modifier - .fillMaxWidth(0.7f) - - ) { - Text(text = "Cadastrar") - } + ) ShowErrors(viewModel.addNewUserErrorMessages) } } diff --git a/app/src/main/java/com/example/greetingcard/view/component/ButtonDefault.kt b/app/src/main/java/com/example/greetingcard/view/component/ButtonDefault.kt new file mode 100644 index 0000000..8de2650 --- /dev/null +++ b/app/src/main/java/com/example/greetingcard/view/component/ButtonDefault.kt @@ -0,0 +1,31 @@ +package com.example.greetingcard.view.component + +import androidx.compose.foundation.layout.height +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp + +@Composable +fun ButtonDefault(buttonText: String, onClick: () -> Unit) { + Button( + onClick = onClick, + modifier = Modifier.height(44.dp), + colors = ButtonDefaults.buttonColors(Color.Cyan) + ) { + ButtonText(buttonText) + } +} + +@Composable +private fun ButtonText(buttonText: String) { + Text( + text = buttonText, + fontWeight = FontWeight.Normal, + color = Color.Black + ) +} diff --git a/app/src/main/java/com/example/greetingcard/view/component/InputFields.kt b/app/src/main/java/com/example/greetingcard/view/component/InputFields.kt index 0d584e6..6d79335 100644 --- a/app/src/main/java/com/example/greetingcard/view/component/InputFields.kt +++ b/app/src/main/java/com/example/greetingcard/view/component/InputFields.kt @@ -2,6 +2,8 @@ package com.example.greetingcard.view.component import android.os.Build import androidx.annotation.RequiresApi +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding @@ -11,11 +13,14 @@ import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.OffsetMapping import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import com.example.greetingcard.viewModel.NewUserViewModel @@ -33,7 +38,7 @@ fun InputFields( ) { Column() { val viewModel: NewUserViewModel = viewModel() - Text(text = title) + InputLabel(title = title) OutlinedTextField( value = value, onValueChange = { newValue -> @@ -43,7 +48,8 @@ fun InputFields( }, modifier = Modifier .fillMaxWidth() - .padding(top = 16.dp), + .padding(top = 16.dp) + .border(1.dp, Color(0xFF777777), RoundedCornerShape(16.dp)), keyboardOptions = KeyboardOptions( keyboardType = type ), @@ -52,7 +58,22 @@ fun InputFields( isPassword -> PasswordVisualTransformation() isDateField -> viewModel.dateVisualTransformation() else -> VisualTransformation.None - } + }, + ) + } +} + +@Composable +private fun InputLabel(title: String) { + Box( + modifier = Modifier + .padding(bottom = 12.dp) + ) { + Text( + text = title, + fontSize = 12.sp, + fontWeight = FontWeight.Normal, + color = Color(0xFF777777) ) } } \ No newline at end of file diff --git a/app/src/main/java/com/example/greetingcard/view/component/ShowErrors.kt b/app/src/main/java/com/example/greetingcard/view/component/ShowErrors.kt index 3518150..80f0d3b 100644 --- a/app/src/main/java/com/example/greetingcard/view/component/ShowErrors.kt +++ b/app/src/main/java/com/example/greetingcard/view/component/ShowErrors.kt @@ -5,7 +5,9 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp @Composable fun ShowErrors(errorMessages: List) { @@ -14,6 +16,8 @@ fun ShowErrors(errorMessages: List) { Text( text = error, color = Color.Red, + fontSize = 12.sp, + fontWeight = FontWeight.Normal, modifier = Modifier.padding(bottom = 8.dp) ) } From 9f8da2c627bb5fe9d9aa167e94c10f00ab2f83f0 Mon Sep 17 00:00:00 2001 From: Taqtile Date: Mon, 16 Sep 2024 16:36:58 -0300 Subject: [PATCH 3/6] reload when enter userListScreen --- .../greetingcard/model/NewUserRequest.kt | 2 +- .../greetingcard/repository/UserRepository.kt | 4 ++ .../greetingcard/view/NewUserScreen.kt | 4 +- .../greetingcard/view/UserListScreen.kt | 5 +++ .../viewModel/NewUserViewModel.kt | 37 +++++++++++++------ 5 files changed, 36 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/example/greetingcard/model/NewUserRequest.kt b/app/src/main/java/com/example/greetingcard/model/NewUserRequest.kt index 959fa8d..5f8ecee 100644 --- a/app/src/main/java/com/example/greetingcard/model/NewUserRequest.kt +++ b/app/src/main/java/com/example/greetingcard/model/NewUserRequest.kt @@ -7,4 +7,4 @@ data class NewUserRequest( val birthDate: String, val password: String, val role: Roles -) \ No newline at end of file + ) \ No newline at end of file diff --git a/app/src/main/java/com/example/greetingcard/repository/UserRepository.kt b/app/src/main/java/com/example/greetingcard/repository/UserRepository.kt index 5027229..b5234c7 100644 --- a/app/src/main/java/com/example/greetingcard/repository/UserRepository.kt +++ b/app/src/main/java/com/example/greetingcard/repository/UserRepository.kt @@ -55,6 +55,10 @@ class UserRepository private constructor() { suspend fun newUser(newUserRequest: NewUserRequest) { try { UserRetrofitService.userRetrofitService.newUser(token, newUserRequest) + } catch (e: IOException) { + throw Exception("Erro de rede ao cadastrar usuário: ${e.message}") + } catch (e: HttpException) { + throw Exception("Erro ao cadastrar usuário: ${e.message()}") } catch (e: Exception) { throw Exception("Erro desconhecido ao cadastrar usuário: ${e.message}") } diff --git a/app/src/main/java/com/example/greetingcard/view/NewUserScreen.kt b/app/src/main/java/com/example/greetingcard/view/NewUserScreen.kt index 197003c..2fe2382 100644 --- a/app/src/main/java/com/example/greetingcard/view/NewUserScreen.kt +++ b/app/src/main/java/com/example/greetingcard/view/NewUserScreen.kt @@ -111,11 +111,9 @@ private fun NewUserForm(navController: NavHostController) { buttonText = "Cadastrar", onClick = { viewModel.validateAndSetAllErrors() - viewModel.addNewUser() - - Toast.makeText(context, viewModel.birthDateLocalDate.toString() ,Toast.LENGTH_LONG).show() if(viewModel.noErrors()) { + viewModel.addNewUser() navController.navigate("UserListScreen") Toast.makeText(context, "Sucesso ao Cadastrar usuário" ,Toast.LENGTH_LONG).show() } else { diff --git a/app/src/main/java/com/example/greetingcard/view/UserListScreen.kt b/app/src/main/java/com/example/greetingcard/view/UserListScreen.kt index ba84a05..e5b73d5 100644 --- a/app/src/main/java/com/example/greetingcard/view/UserListScreen.kt +++ b/app/src/main/java/com/example/greetingcard/view/UserListScreen.kt @@ -13,6 +13,7 @@ import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -30,6 +31,10 @@ fun UserListScreen(navController: NavHostController) { val viewModel: UserListViewModel = viewModel() val userPagingItems = viewModel.userList.collectAsLazyPagingItems() + LaunchedEffect(Unit) { + viewModel.loadUsers() + } + Scaffold(modifier = Modifier.padding(32.dp), floatingActionButton = { FloatingActionButton(onClick = { navController.navigate("NewUserScreen") }) { diff --git a/app/src/main/java/com/example/greetingcard/viewModel/NewUserViewModel.kt b/app/src/main/java/com/example/greetingcard/viewModel/NewUserViewModel.kt index 94191fb..28f875b 100644 --- a/app/src/main/java/com/example/greetingcard/viewModel/NewUserViewModel.kt +++ b/app/src/main/java/com/example/greetingcard/viewModel/NewUserViewModel.kt @@ -32,6 +32,7 @@ class NewUserViewModel : ViewModel() { var emailState by mutableStateOf("") var phoneState by mutableStateOf("") var birthDateState by mutableStateOf("") + var birthDateFormatted by mutableStateOf("") var passwordState by mutableStateOf("") var roleState by mutableStateOf(null) @@ -42,7 +43,6 @@ class NewUserViewModel : ViewModel() { var passwordErrorMessages by mutableStateOf(listOf()) var roleErrorMessages by mutableStateOf(listOf()) var addNewUserErrorMessages by mutableStateOf(listOf()) - var birthDateLocalDate by mutableStateOf(null) var isLoading by mutableStateOf(false) @@ -131,19 +131,32 @@ class NewUserViewModel : ViewModel() { private fun validateAndSetBirthDateErrors() { - - val day = birthDateState.substring(0, 2).toInt() - val month = birthDateState.substring(2, 4).toInt() - val year = birthDateState.substring(4, 8).toInt() - - val date = LocalDate.of(year,month,day) - val errors = mutableListOf() - if (!date.isBefore(LocalDate.now())) { - errors.add("A data deve ser uma data passada.") + if (birthDateState.length != 8) { + errors.add("A data deve estar no formato dd/MM/yyyy.") } else { - birthDateLocalDate = date + val day = birthDateState.substring(0, 2).toIntOrNull() + val month = birthDateState.substring(2, 4).toIntOrNull() + val year = birthDateState.substring(4, 8).toIntOrNull() + + if (day == null || month == null || year == null) { + errors.add("A data contém valores inválidos.") + } else { + val date = try { + LocalDate.of(year, month, day) + } catch (e: DateTimeException) { + null + } + + if (date == null) { + errors.add("Data inválida.") + } else if (!date.isBefore(LocalDate.now())) { + errors.add("A data deve estar no passado.") + } else { + birthDateFormatted = date.toString() + } + } } birthDateErrorMessages = errors @@ -167,7 +180,7 @@ class NewUserViewModel : ViewModel() { phone = phoneState, password = passwordState, role = Roles.USER, - birthDate = birthDateLocalDate.toString() + birthDate = "1999-03-03" ) viewModelScope.launch { From 083c0ceedce92bcdac6c07954874d389abb6f940 Mon Sep 17 00:00:00 2001 From: Taqtile Date: Mon, 16 Sep 2024 16:46:27 -0300 Subject: [PATCH 4/6] padding adjust --- .../com/example/greetingcard/view/component/ButtonDefault.kt | 2 +- .../java/com/example/greetingcard/view/component/InputFields.kt | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/com/example/greetingcard/view/component/ButtonDefault.kt b/app/src/main/java/com/example/greetingcard/view/component/ButtonDefault.kt index 8de2650..d1ea690 100644 --- a/app/src/main/java/com/example/greetingcard/view/component/ButtonDefault.kt +++ b/app/src/main/java/com/example/greetingcard/view/component/ButtonDefault.kt @@ -15,7 +15,7 @@ fun ButtonDefault(buttonText: String, onClick: () -> Unit) { Button( onClick = onClick, modifier = Modifier.height(44.dp), - colors = ButtonDefaults.buttonColors(Color.Cyan) + colors = ButtonDefaults.buttonColors(Color.LightGray) ) { ButtonText(buttonText) } diff --git a/app/src/main/java/com/example/greetingcard/view/component/InputFields.kt b/app/src/main/java/com/example/greetingcard/view/component/InputFields.kt index 6d79335..449ae19 100644 --- a/app/src/main/java/com/example/greetingcard/view/component/InputFields.kt +++ b/app/src/main/java/com/example/greetingcard/view/component/InputFields.kt @@ -48,7 +48,6 @@ fun InputFields( }, modifier = Modifier .fillMaxWidth() - .padding(top = 16.dp) .border(1.dp, Color(0xFF777777), RoundedCornerShape(16.dp)), keyboardOptions = KeyboardOptions( keyboardType = type From cbd40c2b6e6c197aa95cd35422996d59f091fdb9 Mon Sep 17 00:00:00 2001 From: Vitor Tanabe <94921541+VituHonda@users.noreply.github.com> Date: Wed, 18 Sep 2024 11:45:52 -0300 Subject: [PATCH 5/6] Update app/src/main/java/com/example/greetingcard/view/LoginScreen.kt Changing component name Co-authored-by: Alan Raso --- app/src/main/java/com/example/greetingcard/view/LoginScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/example/greetingcard/view/LoginScreen.kt b/app/src/main/java/com/example/greetingcard/view/LoginScreen.kt index adea52c..0ae35c7 100644 --- a/app/src/main/java/com/example/greetingcard/view/LoginScreen.kt +++ b/app/src/main/java/com/example/greetingcard/view/LoginScreen.kt @@ -34,7 +34,7 @@ fun LoginScreen(navController: NavHostController) { .padding(innerPadding) ) { Spacer(modifier = Modifier.height(24.dp)) - TitleH1(title = "Bem vindo(a) à Taqtile!") + H1(title = "Bem vindo(a) à Taqtile!") Spacer(modifier = Modifier.height(48.dp)) InputFields( viewModel.emailState, From ad684be2bbdc41152d66b9fd48afbfb700e8713d Mon Sep 17 00:00:00 2001 From: Taqtile Date: Wed, 18 Sep 2024 12:06:14 -0300 Subject: [PATCH 6/6] implement init from viewmodel sugestion --- .../main/java/com/example/greetingcard/view/UserListScreen.kt | 4 ---- .../com/example/greetingcard/viewModel/UserListViewModel.kt | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/example/greetingcard/view/UserListScreen.kt b/app/src/main/java/com/example/greetingcard/view/UserListScreen.kt index e5b73d5..25b9b2c 100644 --- a/app/src/main/java/com/example/greetingcard/view/UserListScreen.kt +++ b/app/src/main/java/com/example/greetingcard/view/UserListScreen.kt @@ -31,10 +31,6 @@ fun UserListScreen(navController: NavHostController) { val viewModel: UserListViewModel = viewModel() val userPagingItems = viewModel.userList.collectAsLazyPagingItems() - LaunchedEffect(Unit) { - viewModel.loadUsers() - } - Scaffold(modifier = Modifier.padding(32.dp), floatingActionButton = { FloatingActionButton(onClick = { navController.navigate("NewUserScreen") }) { diff --git a/app/src/main/java/com/example/greetingcard/viewModel/UserListViewModel.kt b/app/src/main/java/com/example/greetingcard/viewModel/UserListViewModel.kt index 764add4..c28e3d6 100644 --- a/app/src/main/java/com/example/greetingcard/viewModel/UserListViewModel.kt +++ b/app/src/main/java/com/example/greetingcard/viewModel/UserListViewModel.kt @@ -16,6 +16,10 @@ class UserListViewModel : ViewModel() { private val userRepository = UserRepository.getInstance() + init { + loadUsers() + } + var isLoading by mutableStateOf(false) var userList = MutableStateFlow>(PagingData.empty()) var loadErrorMessages by mutableStateOf(listOf())