diff options
| author | Alberto Duarte (PWC) <alberto.duarte.delgado@pwc.com> | 2023-07-24 12:12:03 +0100 |
|---|---|---|
| committer | Alberto Duarte (PWC) <alberto.duarte.delgado@pwc.com> | 2023-07-24 12:12:03 +0100 |
| commit | ffe8799737b060f0d7d73ad394cc255b73a853ec (patch) | |
| tree | 90f90bc8ddbd4896d705b7abb968aaa4f53f9a6f | |
| parent | bc2fd808fdf8691580901327ffce1f26f6d0334f (diff) | |
refactorizado
44 files changed, 178 insertions, 316 deletions
diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/dao/UserDAO.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/dao/UserDAO.kt deleted file mode 100644 index 6f04ec9..0000000 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/dao/UserDAO.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.frannazario.proyectoandroid.data.dao - -import androidx.room.Dao -import androidx.room.Query -import com.frannazario.proyectoandroid.data.models.UserLocal - -@Dao -interface UserDao { - @Query("SELECT * FROM user") - fun getAll(): List<UserLocal> - -// @Query("SELECT * FROM user WHERE category LIKE :id") -// fun getByCategory(id: Int): List<User> -// -// @Insert -// fun insertAll(vararg user: User) -// -// @Delete -// fun delete(user: User) -} diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/LoginDataSource.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/LoginDataSource.kt deleted file mode 100644 index 3f761ea..0000000 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/LoginDataSource.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.frannazario.proyectoandroid.data.datasources - -import androidx.lifecycle.LiveData -import com.frannazario.proyectoandroid.data.responses.LoginResponse -import com.frannazario.proyectoandroid.data.responses.SigninResponse - -interface LoginDataSource { - fun login (email: String, password: String): LiveData<LoginResponse> -}
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/QuestionsRemoteDataSource.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/QuestionsRemoteDataSource.kt index a8bafa3..b26d62c 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/QuestionsRemoteDataSource.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/QuestionsRemoteDataSource.kt @@ -28,8 +28,8 @@ class QuestionsRemoteDataSource: QuestionsDataSource { return questionList } + //Never implemented just for local repo override fun saveQuestions(context: Context, questions: List<Question>) { TODO("Not yet implemented") } - }
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/ScoreLocalDataSource.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/ScoreLocalDataSource.kt index 0407296..5e8492e 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/ScoreLocalDataSource.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/ScoreLocalDataSource.kt @@ -7,7 +7,7 @@ import com.frannazario.proyectoandroid.data.models.Score class ScoreLocalDataSource { - suspend fun getScores(context: Context): List<Score> { + fun getScores(context: Context): List<Score> { val dbLocal = Room.databaseBuilder( context.applicationContext, AppDatabase::class.java, "database-name" diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SigninDataSource.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SigninDataSource.kt index 4290c0a..9b11980 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SigninDataSource.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SigninDataSource.kt @@ -4,5 +4,5 @@ import androidx.lifecycle.LiveData import com.frannazario.proyectoandroid.data.responses.SigninResponse interface SigninDataSource { - fun register(email: String, password: String): LiveData<SigninResponse> + fun login (email: String, password: String): LiveData<SigninResponse> }
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SignupDataSource.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SignupDataSource.kt new file mode 100644 index 0000000..9591c76 --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SignupDataSource.kt @@ -0,0 +1,8 @@ +package com.frannazario.proyectoandroid.data.datasources + +import androidx.lifecycle.LiveData +import com.frannazario.proyectoandroid.data.responses.SignupResponse + +interface SignupDataSource { + fun register(email: String, password: String): LiveData<SignupResponse> +}
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/TotalScoreRemoteDataSource.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/TotalScoreRemoteDataSource.kt deleted file mode 100644 index e82daed..0000000 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/TotalScoreRemoteDataSource.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.frannazario.proyectoandroid.data.datasources - -import com.google.firebase.firestore.ktx.firestore -import com.google.firebase.ktx.Firebase - -class TotalScoreRemoteDataSource { -// -// private val db = Firebase.firestore -// -// suspend fun getTotalScores(): UserLocal { -// try { -// val response = db.collection("Usuarios") -// .document(uid) -// .get() -// .await() -// -// if (response.exists()) { -// // User found, return the user object -// return response.toObject<UserLocal>() ?: UserLocal(username = "gato") -// } else { -// // User not found, create a new user -// val newUser = UserLocal(username = email) -// db.collection("Usuarios") -// .document(uid) -// .set(newUser) -// .await() -// return newUser -// } -// } catch (e: Exception) { -// e.printStackTrace() -// Log.e("pruebax", e.toString()) -// } -// -// // Return a default user if there was an error -// return UserLocal(username = "perro", userimage = "https://upload.wikimedia.org/wikipedia/commons/8/89/Portrait_Placeholder.png") -// } -}
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/UsersRemoteDataSource.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/UsersRemoteDataSource.kt index 5f92d4b..2c8124d 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/UsersRemoteDataSource.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/UsersRemoteDataSource.kt @@ -38,39 +38,6 @@ class UsersRemoteDataSource { return UserRemote(username = "perro", userimage = "https://upload.wikimedia.org/wikipedia/commons/8/89/Portrait_Placeholder.png") } -// suspend fun updateUser(uid: String, user: UserRemote, ): UserRemote { -// try { -// val userRef = db.collection("Usuarios").document(uid) -// -//// First, fetch the existing user data using get() method -// val response = userRef.get().await() -// -// if (response.exists()) { -// // User exists in Firestore -// // Get the current user data as a map -// val existingUserData = response.data -// -// // Modify the existing user data as needed -// existingUserData?.set(user) -// -// // Update the user data in Firestore using the update() method -// if (existingUserData != null) { -// userRef.update(user) -// .addOnSuccessListener { -// } -// .addOnFailureListener { e -> -// } -// } -// } else { -// // User does not exist in Firestore -// // Handle the case where the user doesn't exist -// } -// } catch (e: Exception) { -// e.printStackTrace() -// Log.e("pruebay", e.toString()) -// } -// } - suspend fun updateUser(uid: String, user: UserRemote): UserRemote { try { val userRef = db.collection("Usuarios").document(uid) diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/models/QuestionDTO.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/models/Question.kt index a06f9de..4e62bf0 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/models/QuestionDTO.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/models/Question.kt @@ -4,8 +4,9 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey +//DTO @Entity -data class Question( + data class Question( // @PrimaryKey (autoGenerate = true) var id: Int = 0, @PrimaryKey var question: String = "", @ColumnInfo var response1: String = "", diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/models/ScoreDTO.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/models/Score.kt index 37126f7..4311a11 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/models/ScoreDTO.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/models/Score.kt @@ -4,6 +4,7 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey +//DTO @Entity data class Score( @PrimaryKey(autoGenerate = true) var id: Int = 0, diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/models/TotalScoreDTO.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/models/TotalScore.kt index 0108c30..7acd152 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/models/TotalScoreDTO.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/models/TotalScore.kt @@ -1,5 +1,7 @@ package com.frannazario.proyectoandroid.data.models + +//DTO data class TotalScore( val score: String = "", val date: String = "" // O cualquier tipo de dato que uses para la fecha en Firestore (String, Timestamp, etc.) diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/models/UserLocal.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/models/UserLocal.kt deleted file mode 100644 index 7903652..0000000 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/models/UserLocal.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.frannazario.proyectoandroid.data.models - -import androidx.room.ColumnInfo -import androidx.room.Entity -import androidx.room.PrimaryKey - -@Entity -data class UserLocal( - @PrimaryKey (autoGenerate = true) var id: Int = 0, - @ColumnInfo override var username: String = "", - @ColumnInfo override var userimage: String = "", -) : UserModel diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/models/UserModel.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/models/UserModel.kt index 28d761a..8d92589 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/models/UserModel.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/models/UserModel.kt @@ -1,5 +1,7 @@ package com.frannazario.proyectoandroid.data.models + +//DTO this interface is crreated in case you want to create a userLocal too, to play offline interface UserModel { val username: String val userimage: String diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/models/UserRemote.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/models/UserRemote.kt index cc20978..383a589 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/models/UserRemote.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/models/UserRemote.kt @@ -1,5 +1,7 @@ package com.frannazario.proyectoandroid.data.models + +//DTO data class UserRemote ( override var username: String = "error", override var userimage: String = "", diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/CategoriesRepository.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/CategoriesRepository.kt index 23a878e..9400bc7 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/CategoriesRepository.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/CategoriesRepository.kt @@ -5,7 +5,7 @@ import com.frannazario.proyectoandroid.presentation.utils.CategoryEnum import kotlinx.coroutines.flow.flow import java.lang.Exception -class CategoriesRepository() { +class CategoriesRepository { fun getCategories() = flow { try { diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/LoginRepository.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/LoginRepository.kt deleted file mode 100644 index 3561d42..0000000 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/LoginRepository.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.frannazario.proyectoandroid.data.repositories - -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import com.frannazario.proyectoandroid.data.responses.LoginResponse -import com.frannazario.proyectoandroid.data.utils.FieldEnum -import com.google.firebase.auth.FirebaseAuth - -class LoginRepository(){ - private val auth: FirebaseAuth = FirebaseAuth.getInstance() - - fun login(email: String, password: String): LiveData<LoginResponse> { - val resultLiveData = MutableLiveData<LoginResponse>() - - auth.signInWithEmailAndPassword(email, password) - .addOnCompleteListener { task -> - if (task.isSuccessful) { - val user = auth.currentUser - resultLiveData.value = LoginResponse.Success(user) - } else { - val error = task.exception?.message ?: "Error desconocido" - val field = FieldEnum.EMAIL_FIELD // Replace with the appropriate field - resultLiveData.value = LoginResponse.Error(error, field) - } - } - return resultLiveData - } -}
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/PasswordRecoveryRepository.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/PasswordRecoveryRepository.kt index ce7c663..aa0170e 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/PasswordRecoveryRepository.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/PasswordRecoveryRepository.kt @@ -6,7 +6,7 @@ import com.frannazario.proyectoandroid.data.responses.PasswordRecoveryResponse import com.frannazario.proyectoandroid.data.utils.FieldEnum import com.google.firebase.auth.FirebaseAuth -class PasswordRecoveryRepository (){ +class PasswordRecoveryRepository { private val auth: FirebaseAuth = FirebaseAuth.getInstance() fun recover (email: String): LiveData<PasswordRecoveryResponse> { diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SigninRepository.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SigninRepository.kt index 06acd39..272b7fa 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SigninRepository.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SigninRepository.kt @@ -2,25 +2,25 @@ package com.frannazario.proyectoandroid.data.repositories import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import com.frannazario.proyectoandroid.data.datasources.SigninDataSource import com.frannazario.proyectoandroid.data.responses.SigninResponse import com.frannazario.proyectoandroid.data.utils.FieldEnum import com.google.firebase.auth.FirebaseAuth -class SigninRepository() { - private val auth = FirebaseAuth.getInstance() +class SigninRepository{ + private val auth: FirebaseAuth = FirebaseAuth.getInstance() - fun register(email: String, password: String): LiveData<SigninResponse> { + fun login(email: String, password: String): LiveData<SigninResponse> { val resultLiveData = MutableLiveData<SigninResponse>() - auth.createUserWithEmailAndPassword(email, password) + auth.signInWithEmailAndPassword(email, password) .addOnCompleteListener { task -> if (task.isSuccessful) { val user = auth.currentUser resultLiveData.value = SigninResponse.Success(user) } else { val error = task.exception?.message ?: "Error desconocido" - resultLiveData.value = SigninResponse.Error(error, FieldEnum.EMAIL_FIELD) + val field = FieldEnum.EMAIL_FIELD // Replace with the appropriate field + resultLiveData.value = SigninResponse.Error(error, field) } } return resultLiveData diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SignoutRepository.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SignoutRepository.kt index 0c0484a..e943830 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SignoutRepository.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SignoutRepository.kt @@ -1,7 +1,5 @@ package com.frannazario.proyectoandroid.data.repositories -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData import com.frannazario.proyectoandroid.data.responses.SignoutResponse import com.google.firebase.auth.FirebaseAuth import kotlinx.coroutines.flow.flow @@ -13,7 +11,6 @@ class SignoutRepository { fun signout() = flow { try { auth.signOut() - val user = auth.currentUser if (auth.currentUser == null) { emit(SignoutResponse.Success("Sucess")) } else { diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SignupRepository.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SignupRepository.kt new file mode 100644 index 0000000..500e553 --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SignupRepository.kt @@ -0,0 +1,27 @@ +package com.frannazario.proyectoandroid.data.repositories + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import com.frannazario.proyectoandroid.data.responses.SignupResponse +import com.frannazario.proyectoandroid.data.utils.FieldEnum +import com.google.firebase.auth.FirebaseAuth + +class SignupRepository { + private val auth = FirebaseAuth.getInstance() + + fun register(email: String, password: String): LiveData<SignupResponse> { + val resultLiveData = MutableLiveData<SignupResponse>() + + auth.createUserWithEmailAndPassword(email, password) + .addOnCompleteListener { task -> + if (task.isSuccessful) { + val user = auth.currentUser + resultLiveData.value = SignupResponse.Success(user) + } else { + val error = task.exception?.message ?: "Error desconocido" + resultLiveData.value = SignupResponse.Error(error, FieldEnum.EMAIL_FIELD) + } + } + return resultLiveData + } +}
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/TotalScoreRepository.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/TotalScoreRepository.kt deleted file mode 100644 index 6827085..0000000 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/TotalScoreRepository.kt +++ /dev/null @@ -1,4 +0,0 @@ -package com.frannazario.proyectoandroid.data.repositories - -class TotalScoreRepository { -}
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/responses/CategoriesResponse.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/responses/CategoriesResponse.kt index 141c5df..8dde7b9 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/responses/CategoriesResponse.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/responses/CategoriesResponse.kt @@ -1,6 +1,5 @@ package com.frannazario.proyectoandroid.data.responses -import com.frannazario.proyectoandroid.data.utils.FieldEnum import com.frannazario.proyectoandroid.presentation.utils.CategoryEnum sealed class CategoriesResponse { diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/responses/LoginResponse.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/responses/LoginResponse.kt deleted file mode 100644 index 8be42bd..0000000 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/responses/LoginResponse.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.frannazario.proyectoandroid.data.responses - -import com.frannazario.proyectoandroid.data.utils.FieldEnum -import com.google.firebase.auth.FirebaseUser - -sealed class LoginResponse { - - data class Success(val user: FirebaseUser?): LoginResponse() - data class Error(val error: String, val field: FieldEnum): LoginResponse() -}
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/responses/SigninResponse.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/responses/SigninResponse.kt index 701118d..9f481c7 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/responses/SigninResponse.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/responses/SigninResponse.kt @@ -4,6 +4,7 @@ import com.frannazario.proyectoandroid.data.utils.FieldEnum import com.google.firebase.auth.FirebaseUser sealed class SigninResponse { + data class Success(val user: FirebaseUser?): SigninResponse() data class Error(val error: String, val field: FieldEnum): SigninResponse() }
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/responses/SignupResponse.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/responses/SignupResponse.kt new file mode 100644 index 0000000..f7170f9 --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/responses/SignupResponse.kt @@ -0,0 +1,9 @@ +package com.frannazario.proyectoandroid.data.responses + +import com.frannazario.proyectoandroid.data.utils.FieldEnum +import com.google.firebase.auth.FirebaseUser + +sealed class SignupResponse { + data class Success(val user: FirebaseUser?): SignupResponse() + data class Error(val error: String, val field: FieldEnum): SignupResponse() +}
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/responses/UsersResponse.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/responses/UsersResponse.kt index d02d7a3..cf5f9cb 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/responses/UsersResponse.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/responses/UsersResponse.kt @@ -1,6 +1,5 @@ package com.frannazario.proyectoandroid.data.responses -import com.frannazario.proyectoandroid.data.models.UserLocal import com.frannazario.proyectoandroid.data.models.UserRemote sealed class UsersResponse { diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/utils/CategoryEnum.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/utils/CategoryEnum.kt index 9c5ac8a..5eefe1b 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/utils/CategoryEnum.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/utils/CategoryEnum.kt @@ -20,4 +20,4 @@ enum class CategoryEnum( GENERAL(8, R.string.category_general, R.drawable.ic_general, "") } -fun getCategoryById(id: Int) = CategoryEnum.values().firstOrNull { it.id == id }
\ No newline at end of file +//fun getCategoryById(id: Int) = CategoryEnum.values().firstOrNull { it.id == id }
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/utils/StringUtils.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/utils/StringUtils.kt index 6a0fb16..1dc4daf 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/utils/StringUtils.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/utils/StringUtils.kt @@ -1,19 +1,19 @@ package com.frannazario.proyectoandroid.data.utils fun String?.isEmail(): Boolean { - val email_regex = "[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" + - "\\@" + + val emailRegex = "[a-zA-Z0-9+._%\\-]{1,256}" + + "@" + "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" + "(" + "\\." + "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" + ")+" - return this?.matches(email_regex.toRegex()) ?: false + return this?.matches(emailRegex.toRegex()) ?: false } fun String?.isValidPassword(): Boolean { - val password_regex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*?[#?!@\$%^&*-])[a-zA-Z\\d\\w\\W]{8,}\$" - return this?.matches(password_regex.toRegex()) ?: false + val passwordRegex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*?[#?!@\$%^&*-])[a-zA-Z\\w\\W]{8,}\$" + return this?.matches(passwordRegex.toRegex()) ?: false } fun checkEmail(email: String?): ErrorTypes? { @@ -43,7 +43,7 @@ enum class ErrorTypes(val error: String) { PASSWORD_WRONG_FORMAT("La password debe contener una minuscula, una mayuscula, un nĂºmero y un simbolo") } -enum class FieldEnum() { +enum class FieldEnum { PASSWORD_FIELD, EMAIL_FIELD }
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/CategoriesViewModel.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/CategoriesViewModel.kt index de72ec6..f3e2797 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/CategoriesViewModel.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/CategoriesViewModel.kt @@ -11,7 +11,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.update -class CategoriesViewModel(val repository: CategoriesRepository = CategoriesRepository()): ViewModel() { +class CategoriesViewModel(private val repository: CategoriesRepository = CategoriesRepository()): ViewModel() { private val mutableState = MutableStateFlow(CategoriesViewState()) val categoriesViewState: StateFlow<CategoriesViewState> = mutableState diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/LoginViewModel.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/LoginViewModel.kt deleted file mode 100644 index a413731..0000000 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/LoginViewModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.frannazario.proyectoandroid.data.viewmodels - -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel -import com.frannazario.proyectoandroid.data.repositories.LoginRepository -import com.frannazario.proyectoandroid.data.responses.LoginResponse -import com.frannazario.proyectoandroid.data.utils.FieldEnum -import com.frannazario.proyectoandroid.data.utils.checkEmail -import com.frannazario.proyectoandroid.data.utils.checkPassword - -class LoginViewModel(private val repository: LoginRepository= LoginRepository()): ViewModel() { - private val loginResponseLiveData = MutableLiveData<LoginResponse>() - fun getLoginResultLiveData(): LiveData<LoginResponse> { - return loginResponseLiveData - } - fun login(email: String?, password: String?) { - val emailState = checkEmail(email) - val passState = checkPassword(password) - - if(emailState == null && passState == null) { - val response = repository.login( - email ?: "", - password ?: "") - response.observeForever { loginResponse -> - loginResponseLiveData.postValue(loginResponse) - } - } else if (emailState != null) { - loginResponseLiveData.postValue( - LoginResponse.Error( - emailState.error, - FieldEnum.EMAIL_FIELD - ) - ) - } else if (passState != null) { - loginResponseLiveData.postValue( - LoginResponse.Error(passState.error, FieldEnum.PASSWORD_FIELD) - ) - } - } -} - - diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/PasswordRecoveryViewModel.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/PasswordRecoveryViewModel.kt index 3beed26..b884704 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/PasswordRecoveryViewModel.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/PasswordRecoveryViewModel.kt @@ -20,11 +20,12 @@ class PasswordRecoveryViewModel(private val repository: PasswordRecoveryReposito if(emailState == null) { val response = repository.recover( - email ?: "") + email + ) response.observeForever { passwordRecoveryResponse -> passwordRecoveryResponseLiveData.postValue(passwordRecoveryResponse) } - } else if (emailState != null) { + } else { passwordRecoveryResponseLiveData.postValue( PasswordRecoveryResponse.Error( emailState.error, diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/PlayViewModel.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/PlayViewModel.kt index 31d83ab..3c95ccb 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/PlayViewModel.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/PlayViewModel.kt @@ -26,7 +26,7 @@ class PlayViewModel( private val repositoryQuestions: QuestionsRepository = QuestionsRepository(), userViewModel: UserViewModel ): ViewModel() { - val userVM = userViewModel + private val userVM = userViewModel private val mutableStateQuestions = MutableStateFlow(QuestionsViewState()) val questionsViewState: StateFlow<QuestionsViewState> = mutableStateQuestions private val mutableStateScores = MutableStateFlow(ScoreViewState()) @@ -82,7 +82,7 @@ class PlayViewModel( } fun saveTotalScore() { - var totalScore: Int = 0 + var totalScore = 0 scoresViewState.value.scores?.forEach { score -> totalScore += score.score.toInt() } @@ -109,7 +109,7 @@ class PlayViewModel( return questionList.randomOrNull() ?: Question() } - fun shuffle(randomQuestion: MutableState<Question?>): List<String>? = listOf( + fun shuffle(randomQuestion: MutableState<Question?>): List<String> = listOf( randomQuestion.value?.response1 ?: "1", randomQuestion.value?.response2 ?: "2", randomQuestion.value?.response3 ?: "3" diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SigninViewModel.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SigninViewModel.kt index 794d185..11eb00b 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SigninViewModel.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SigninViewModel.kt @@ -9,39 +9,35 @@ import com.frannazario.proyectoandroid.data.utils.FieldEnum import com.frannazario.proyectoandroid.data.utils.checkEmail import com.frannazario.proyectoandroid.data.utils.checkPassword -class SigninViewModel(private val repository: SigninRepository = SigninRepository()): ViewModel() { - - private val signinResponseLiveData = MutableLiveData<SigninResponse>() - +class SigninViewModel(private val repository: SigninRepository= SigninRepository()): ViewModel() { + private val siginResponseLiveData = MutableLiveData<SigninResponse>() fun getSigninResultLiveData(): LiveData<SigninResponse> { - return signinResponseLiveData + return siginResponseLiveData } - - fun register(email: String?, password: String?) { + fun signin(email: String?, password: String?) { val emailState = checkEmail(email) val passState = checkPassword(password) if(emailState == null && passState == null) { - val response = repository.register( + val response = repository.login( email ?: "", password ?: "") - response.observeForever { signinResponse -> - signinResponseLiveData.postValue(signinResponse) + response.observeForever { loginResponse -> + siginResponseLiveData.postValue(loginResponse) } } else if (emailState != null) { - signinResponseLiveData.postValue( + siginResponseLiveData.postValue( SigninResponse.Error( emailState.error, FieldEnum.EMAIL_FIELD ) ) } else if (passState != null) { - signinResponseLiveData.postValue( - SigninResponse.Error( - passState.error, - FieldEnum.PASSWORD_FIELD - ) + siginResponseLiveData.postValue( + SigninResponse.Error(passState.error, FieldEnum.PASSWORD_FIELD) ) } } -}
\ No newline at end of file +} + + diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SignupViewModel.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SignupViewModel.kt new file mode 100644 index 0000000..218b876 --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SignupViewModel.kt @@ -0,0 +1,47 @@ +package com.frannazario.proyectoandroid.data.viewmodels + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import com.frannazario.proyectoandroid.data.repositories.SignupRepository +import com.frannazario.proyectoandroid.data.responses.SignupResponse +import com.frannazario.proyectoandroid.data.utils.FieldEnum +import com.frannazario.proyectoandroid.data.utils.checkEmail +import com.frannazario.proyectoandroid.data.utils.checkPassword + +class SignupViewModel(private val repository: SignupRepository = SignupRepository()): ViewModel() { + + private val signinResponseLiveData = MutableLiveData<SignupResponse>() + + fun getSignupResultLiveData(): LiveData<SignupResponse> { + return signinResponseLiveData + } + + fun register(email: String?, password: String?) { + val emailState = checkEmail(email) + val passState = checkPassword(password) + + if(emailState == null && passState == null) { + val response = repository.register( + email ?: "", + password ?: "") + response.observeForever { signinResponse -> + signinResponseLiveData.postValue(signinResponse) + } + } else if (emailState != null) { + signinResponseLiveData.postValue( + SignupResponse.Error( + emailState.error, + FieldEnum.EMAIL_FIELD + ) + ) + } else if (passState != null) { + signinResponseLiveData.postValue( + SignupResponse.Error( + passState.error, + FieldEnum.PASSWORD_FIELD + ) + ) + } + } +}
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/UserViewModel.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/UserViewModel.kt index b5f325b..263c75d 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/UserViewModel.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/UserViewModel.kt @@ -1,9 +1,6 @@ package com.frannazario.proyectoandroid.data.viewmodels -import android.content.Intent import android.util.Log -import androidx.core.content.ContextCompat.startActivity -import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.frannazario.proyectoandroid.data.models.TotalScore @@ -12,8 +9,6 @@ import com.frannazario.proyectoandroid.data.repositories.SignoutRepository import com.frannazario.proyectoandroid.data.repositories.UserRepository import com.frannazario.proyectoandroid.data.responses.SignoutResponse import com.frannazario.proyectoandroid.data.responses.UsersResponse -import com.frannazario.proyectoandroid.presentation.activities.AuthActivity -import com.frannazario.proyectoandroid.presentation.activities.MainActivity import com.google.firebase.auth.FirebaseAuth import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow @@ -81,6 +76,7 @@ class UserViewModel(private val userRepository: UserRepository = UserRepository( when (userResponse) { is UsersResponse.Success -> { mutableStateUser.update { it.copy(user = userResponse.user) } + Log.e("prueba", mutableStateUser.value.user.toString()) } is UsersResponse.Error -> { mutableStateUser.update { it.copy(error = userResponse.error) } @@ -88,7 +84,7 @@ class UserViewModel(private val userRepository: UserRepository = UserRepository( } }.flowOn(Dispatchers.IO).launchIn(viewModelScope) - Log.e("prueba", mutableStateUser.value.user.toString()) + Log.e("prueba2", mutableStateUser.value.user.toString()) } } data class UserViewState( diff --git a/app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/AuthActivity.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/AuthActivity.kt index 5ef61fe..1784a11 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/AuthActivity.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/AuthActivity.kt @@ -18,7 +18,7 @@ class AuthActivity : FragmentActivity() { private fun checkIfLogged(){ val auth = FirebaseAuth.getInstance() - auth.currentUser?.apply { + auth.currentUser?.let { navigateToMain() } } diff --git a/app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/MainActivity.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/MainActivity.kt index 40ad63c..83f0f1d 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/MainActivity.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/MainActivity.kt @@ -1,28 +1,17 @@ package com.frannazario.proyectoandroid.presentation.activities -import android.content.Intent import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface -import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.navigation.compose.rememberNavController import com.frannazario.proyectoandroid.presentation.navigation.AppNavigation -import com.frannazario.proyectoandroid.presentation.screens.CategoryListScreen -import com.frannazario.proyectoandroid.presentation.screens.ScoreScreen -import com.frannazario.proyectoandroid.presentation.screens.SettingsScreen import com.frannazario.proyectoandroid.presentation.ui.theme.ProyectoAndroidTheme -import com.frannazario.proyectoandroid.presentation.ui.widgets.BottomNav class MainActivity: ComponentActivity() { - @OptIn(ExperimentalMaterial3Api::class) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { @@ -37,10 +26,4 @@ class MainActivity: ComponentActivity() { } } } - - fun navigateToAuth() { - val intent = Intent(this, AuthActivity:: class.java) - startActivity(intent) - } - } diff --git a/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/LoginFragment.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/LoginFragment.kt index 7681dfc..e5a5c98 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/LoginFragment.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/LoginFragment.kt @@ -5,13 +5,11 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.Toast import androidx.fragment.app.Fragment -import androidx.lifecycle.Observer import androidx.navigation.fragment.findNavController import com.frannazario.proyectoandroid.R -import com.frannazario.proyectoandroid.data.responses.LoginResponse -import com.frannazario.proyectoandroid.data.viewmodels.LoginViewModel +import com.frannazario.proyectoandroid.data.responses.SigninResponse +import com.frannazario.proyectoandroid.data.viewmodels.SigninViewModel import com.frannazario.proyectoandroid.databinding.FragmentLoginBinding import com.frannazario.proyectoandroid.data.utils.FieldEnum import com.frannazario.proyectoandroid.presentation.activities.MainActivity @@ -19,12 +17,12 @@ import com.frannazario.proyectoandroid.presentation.activities.MainActivity class LoginFragment: Fragment() { private lateinit var binding: FragmentLoginBinding - private lateinit var viewModel: LoginViewModel + private lateinit var viewModel: SigninViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - viewModel = LoginViewModel() + viewModel = SigninViewModel() } override fun onCreateView( inflater: LayoutInflater, @@ -44,31 +42,26 @@ class LoginFragment: Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - viewModel.getLoginResultLiveData().observe(viewLifecycleOwner, Observer<LoginResponse?> { response -> + viewModel.getSigninResultLiveData().observe(viewLifecycleOwner) { response -> response?.apply { when (response) { - is LoginResponse.Success -> { + is SigninResponse.Success -> { val intent = Intent(requireContext(), MainActivity::class.java) startActivity(intent) } - is LoginResponse.Error -> { - val intent = Intent(requireContext(), MainActivity::class.java) - startActivity(intent) + is SigninResponse.Error -> { if (response.field == FieldEnum.EMAIL_FIELD) { binding.emailIet.error = response.error - } - else if (response.field == FieldEnum.PASSWORD_FIELD){ + } else if (response.field == FieldEnum.PASSWORD_FIELD) { binding.passwordIet.error = response.error } } - - else -> {} } } - }) + } binding.loginBtn.setOnClickListener { - viewModel.login( + viewModel.signin( email = binding.emailIet.text?.toString(), password = binding.passwordIet.text?.toString() ) diff --git a/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/PasswordRecoveryFragment.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/PasswordRecoveryFragment.kt index fbd2477..e788626 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/PasswordRecoveryFragment.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/PasswordRecoveryFragment.kt @@ -6,7 +6,6 @@ import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.fragment.app.Fragment -import androidx.lifecycle.Observer import androidx.navigation.fragment.findNavController import com.frannazario.proyectoandroid.R import com.frannazario.proyectoandroid.data.responses.PasswordRecoveryResponse @@ -37,22 +36,23 @@ class PasswordRecoveryFragment: Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - viewModel.getPasswordRecoveryResultLiveData().observe(viewLifecycleOwner, Observer<PasswordRecoveryResponse?> { response -> + viewModel.getPasswordRecoveryResultLiveData().observe(viewLifecycleOwner) { response -> response?.apply { - when (response) { - is PasswordRecoveryResponse.Success -> { - Toast.makeText(requireContext(), "Funciona perfect", Toast.LENGTH_LONG) - .show() - } - is PasswordRecoveryResponse.Error -> { - if (response.field == FieldEnum.EMAIL_FIELD) { - binding.emailIet.error = response.error + when (response) { + is PasswordRecoveryResponse.Success -> { + Toast.makeText(requireContext(), "Funciona perfect", Toast.LENGTH_LONG) + .show() + } + + is PasswordRecoveryResponse.Error -> { + if (response.field == FieldEnum.EMAIL_FIELD) { + binding.emailIet.error = response.error + } } + } - else -> {} } } - }) binding.sendEmailBtn.setOnClickListener { binding.emailIet.text?.toString()?.let { it1 -> viewModel.recover( diff --git a/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt index 8d7d0de..ee41f74 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt @@ -6,21 +6,20 @@ import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.fragment.app.Fragment -import androidx.lifecycle.Observer import androidx.navigation.fragment.findNavController import com.frannazario.proyectoandroid.R -import com.frannazario.proyectoandroid.data.responses.SigninResponse +import com.frannazario.proyectoandroid.data.responses.SignupResponse import com.frannazario.proyectoandroid.data.utils.FieldEnum -import com.frannazario.proyectoandroid.data.viewmodels.SigninViewModel +import com.frannazario.proyectoandroid.data.viewmodels.SignupViewModel import com.frannazario.proyectoandroid.databinding.FragmentSigninBinding class SigninFragment: Fragment() { private lateinit var binding: FragmentSigninBinding - private lateinit var viewModel: SigninViewModel + private lateinit var viewModel: SignupViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - viewModel = SigninViewModel() + viewModel = SignupViewModel() } override fun onCreateView( inflater: LayoutInflater, @@ -36,27 +35,24 @@ class SigninFragment: Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - viewModel.getSigninResultLiveData().observe(viewLifecycleOwner, Observer<SigninResponse?> { response -> + viewModel.getSignupResultLiveData().observe(viewLifecycleOwner) { response -> response?.apply { when (response) { - is SigninResponse.Success -> { + is SignupResponse.Success -> { Toast.makeText(requireContext(), "Funciona perfect", Toast.LENGTH_LONG) .show() } - is SigninResponse.Error -> { + is SignupResponse.Error -> { if (response.field == FieldEnum.EMAIL_FIELD) { binding.emailIet.error = response.error - } - else if (response.field == FieldEnum.PASSWORD_FIELD){ + } else if (response.field == FieldEnum.PASSWORD_FIELD) { binding.passwordIet.error = response.error } } - - else -> {} } } - }) + } binding.signinBtn.setOnClickListener { viewModel.register( email = binding.emailIet.text?.toString(), diff --git a/app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/BaseBottomNavScreen.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/BaseBottomNavScreen.kt index b1594a3..d7f296e 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/BaseBottomNavScreen.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/BaseBottomNavScreen.kt @@ -35,7 +35,7 @@ fun BaseBottomNavScreen(mainNavController: NavController, ) { val context = LocalContext.current val bottomNavController = rememberNavController() - val userViewState = userViewModel.userViewState.collectAsState() +// val userViewState = userViewModel.userViewState.collectAsState() val viewModel by remember {mutableStateOf(PlayViewModel(context, userViewModel = userViewModel))} val scoreViewState = viewModel.scoresViewState.collectAsState() @@ -49,7 +49,7 @@ fun BaseBottomNavScreen(mainNavController: NavController, BottomNav(bottomNavController) }, topBar = { - TopBar(userViewState) + TopBar(userViewModel) } ) { Surface( diff --git a/app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/PlayScreen.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/PlayScreen.kt index 7694395..6253600 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/PlayScreen.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/PlayScreen.kt @@ -207,6 +207,7 @@ fun startCounter( counter.value++ delay(1000) } + // En vez de usar un contador deberia usar la cantidad de scores en la bd viewModel.saveScore(Score(score = counter.value.toString(), category = id.toString())) if(scoreViewState.scoresDone > 6){ viewModel.saveTotalScore() diff --git a/app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/ScoreScreen.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/ScoreScreen.kt index 6e420b4..c75d772 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/ScoreScreen.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/ScoreScreen.kt @@ -24,4 +24,3 @@ fun ScoreScreen(navController: NavController, viewModel: PlayViewModel){ } } - diff --git a/app/src/main/java/com/frannazario/proyectoandroid/presentation/ui/widgets/TopBar.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/ui/widgets/TopBar.kt index 84dd02f..f823bc5 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/presentation/ui/widgets/TopBar.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/ui/widgets/TopBar.kt @@ -10,8 +10,6 @@ import androidx.compose.material.Text import androidx.compose.material.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.MutableState -import androidx.compose.runtime.State import androidx.compose.runtime.collectAsState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -25,13 +23,13 @@ import coil.compose.AsyncImage import coil.compose.AsyncImagePainter import com.frannazario.proyectoandroid.R import com.frannazario.proyectoandroid.data.viewmodels.UserViewModel -import com.frannazario.proyectoandroid.data.viewmodels.UserViewState @Composable -fun TopBar(userViewState: State<UserViewState>) { +fun TopBar(userViewModel: UserViewModel) { val imageLoaded = remember { mutableStateOf(true) } + val userViewState = userViewModel.userViewState.collectAsState() LaunchedEffect(userViewState) { Log.e("topbar", userViewState.value.user.username) |