From 35ce1e573564833a14feebbbbbb0b583cc0a76ab Mon Sep 17 00:00:00 2001 From: guilh Date: Sat, 13 Dec 2025 15:14:48 -0300 Subject: [PATCH 1/2] =?UTF-8?q?FIX=20-=20Refatorado=20l=C3=B3gica=20de=20c?= =?UTF-8?q?arregamento=20do=20perfil=20e=20navega=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Atualizado `ProfileViewModel` para centralizar a orquestração de chamadas: `getUserForFirebase` agora dispara a busca de dados do GitHub e repositórios sequencialmente. - Simplificado `ProfileScreen` removendo chamadas de busca individuais e logs desnecessários. - Substituído strings de rota hardcoded por constantes de `AppDestinations` em `HomeScreen` e `ProfileScreen`. - Adicionado limpeza de estado (`clearState`) no `LoginScreen` após o sucesso do login. --- .idea/deploymentTargetSelector.xml | 8 +++++++ .../delecrode/devhub/ui/home/HomeScreen.kt | 4 ++-- .../delecrode/devhub/ui/login/LoginScreen.kt | 1 + .../devhub/ui/profile/ProfileScreen.kt | 6 ++--- .../devhub/ui/profile/ProfileViewModel.kt | 22 +++++++++---------- 5 files changed, 23 insertions(+), 18 deletions(-) diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index b268ef3..eb19885 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,6 +4,14 @@ diff --git a/app/src/main/java/com/delecrode/devhub/ui/home/HomeScreen.kt b/app/src/main/java/com/delecrode/devhub/ui/home/HomeScreen.kt index ee2ad5e..14792c4 100644 --- a/app/src/main/java/com/delecrode/devhub/ui/home/HomeScreen.kt +++ b/app/src/main/java/com/delecrode/devhub/ui/home/HomeScreen.kt @@ -154,7 +154,7 @@ fun HomeScreen(navController: NavController, homeViewModel: HomeViewModel) { text = { Text("Meu Perfil") }, onClick = { expanded = false - navController.navigate("profile") + navController.navigate(AppDestinations.Profile.route) } ) DropdownMenuItem( @@ -162,7 +162,7 @@ fun HomeScreen(navController: NavController, homeViewModel: HomeViewModel) { onClick = { expanded = false homeViewModel.signOut() - navController.navigate("login") { + navController.navigate(AppDestinations.Profile.route) { popUpTo(0) } } diff --git a/app/src/main/java/com/delecrode/devhub/ui/login/LoginScreen.kt b/app/src/main/java/com/delecrode/devhub/ui/login/LoginScreen.kt index 236184d..9f86180 100644 --- a/app/src/main/java/com/delecrode/devhub/ui/login/LoginScreen.kt +++ b/app/src/main/java/com/delecrode/devhub/ui/login/LoginScreen.kt @@ -67,6 +67,7 @@ fun LoginScreen(navController: NavController, viewModel: AuthViewModel) { navController.navigate(AppDestinations.Home.createRoute(state.userUid ?: "")) { popUpTo(AppDestinations.Login.route) { inclusive = true } } + viewModel.clearState() } } diff --git a/app/src/main/java/com/delecrode/devhub/ui/profile/ProfileScreen.kt b/app/src/main/java/com/delecrode/devhub/ui/profile/ProfileScreen.kt index 1108783..4521b2a 100644 --- a/app/src/main/java/com/delecrode/devhub/ui/profile/ProfileScreen.kt +++ b/app/src/main/java/com/delecrode/devhub/ui/profile/ProfileScreen.kt @@ -68,10 +68,8 @@ fun ProfileScreen(navController: NavController, viewModel: ProfileViewModel) { val userName = state.value.userForFirebase.username val repos = state.value.repos - Log.i("ProfileScreen", "ProfileScreen: $userName") LaunchedEffect(Unit) { - viewModel.getUserForGit(userName) - viewModel.getRepos(userName) + viewModel.getUserForFirebase() } LaunchedEffect(state.value.error) { @@ -121,7 +119,7 @@ fun ProfileScreen(navController: NavController, viewModel: ProfileViewModel) { onClick = { expanded = false viewModel.signOut() - navController.navigate("login") { + navController.navigate(AppDestinations.Login.route) { popUpTo(0) } } diff --git a/app/src/main/java/com/delecrode/devhub/ui/profile/ProfileViewModel.kt b/app/src/main/java/com/delecrode/devhub/ui/profile/ProfileViewModel.kt index 69ee5a0..1562025 100644 --- a/app/src/main/java/com/delecrode/devhub/ui/profile/ProfileViewModel.kt +++ b/app/src/main/java/com/delecrode/devhub/ui/profile/ProfileViewModel.kt @@ -28,9 +28,16 @@ class ProfileViewModel(private val userRepository: UserRepository, private val a try { val userForFirebase = userRepository.getUserForFirebase() _uiState.value = _uiState.value.copy( - userForFirebase = userForFirebase, - isLoading = false + userForFirebase = userForFirebase ) + + if (userForFirebase.username.isNotBlank()) { + getUserForGit(userForFirebase.username) + getRepos(userForFirebase.username) + } else { + _uiState.value = _uiState.value.copy(isLoading = false) + } + } catch (e: Exception) { _uiState.value = _uiState.value.copy( error = e.message, @@ -41,13 +48,9 @@ class ProfileViewModel(private val userRepository: UserRepository, private val a } fun getUserForGit(userName: String) { - _uiState.value = _uiState.value.copy( - isLoading = true - ) viewModelScope.launch { try { - val userForGit = - userRepository.getUserForGitHub(userName) + val userForGit = userRepository.getUserForGitHub(userName) _uiState.value = _uiState.value.copy( userForGit = userForGit, isLoading = false @@ -63,10 +66,6 @@ class ProfileViewModel(private val userRepository: UserRepository, private val a fun getRepos(userName: String) { viewModelScope.launch { - _uiState.value = _uiState.value.copy( - isLoading = true, - error = null - ) try { val repos: List = userRepository.getRepos(userName) _uiState.value = _uiState.value.copy( @@ -105,4 +104,3 @@ class ProfileViewModel(private val userRepository: UserRepository, private val a } } - From 419db3769f1a6783b868a35d71acd8ea13c7ee40 Mon Sep 17 00:00:00 2001 From: guilh Date: Sat, 13 Dec 2025 15:15:31 -0300 Subject: [PATCH 2/2] =?UTF-8?q?Removendo=20import=20n=C3=A3o=20utilizado?= =?UTF-8?q?=20na=20ProfileScreen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove importação desnecessária de `android.util.Log` em `ProfileScreen.kt`. --- .../main/java/com/delecrode/devhub/ui/profile/ProfileScreen.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/delecrode/devhub/ui/profile/ProfileScreen.kt b/app/src/main/java/com/delecrode/devhub/ui/profile/ProfileScreen.kt index 4521b2a..256cda3 100644 --- a/app/src/main/java/com/delecrode/devhub/ui/profile/ProfileScreen.kt +++ b/app/src/main/java/com/delecrode/devhub/ui/profile/ProfileScreen.kt @@ -1,6 +1,5 @@ package com.delecrode.devhub.ui.profile -import android.util.Log import android.widget.Toast import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box