summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlberto Duarte (PWC) <alberto.duarte.delgado@pwc.com>2023-07-24 12:12:03 +0100
committerAlberto Duarte (PWC) <alberto.duarte.delgado@pwc.com>2023-07-24 12:12:03 +0100
commitffe8799737b060f0d7d73ad394cc255b73a853ec (patch)
tree90f90bc8ddbd4896d705b7abb968aaa4f53f9a6f
parentbc2fd808fdf8691580901327ffce1f26f6d0334f (diff)
refactorizado
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/dao/UserDAO.kt20
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/datasources/LoginDataSource.kt9
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/datasources/QuestionsRemoteDataSource.kt2
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/datasources/ScoreLocalDataSource.kt2
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SigninDataSource.kt2
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SignupDataSource.kt8
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/datasources/TotalScoreRemoteDataSource.kt37
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/datasources/UsersRemoteDataSource.kt33
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/models/Question.kt (renamed from app/src/main/java/com/frannazario/proyectoandroid/data/models/QuestionDTO.kt)3
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/models/Score.kt (renamed from app/src/main/java/com/frannazario/proyectoandroid/data/models/ScoreDTO.kt)1
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/models/TotalScore.kt (renamed from app/src/main/java/com/frannazario/proyectoandroid/data/models/TotalScoreDTO.kt)2
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/models/UserLocal.kt12
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/models/UserModel.kt2
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/models/UserRemote.kt2
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/repositories/CategoriesRepository.kt2
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/repositories/LoginRepository.kt28
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/repositories/PasswordRecoveryRepository.kt2
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SigninRepository.kt12
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SignoutRepository.kt3
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SignupRepository.kt27
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/repositories/TotalScoreRepository.kt4
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/responses/CategoriesResponse.kt1
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/responses/LoginResponse.kt10
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/responses/SigninResponse.kt1
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/responses/SignupResponse.kt9
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/responses/UsersResponse.kt1
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/utils/CategoryEnum.kt2
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/utils/StringUtils.kt12
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/CategoriesViewModel.kt2
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/LoginViewModel.kt43
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/PasswordRecoveryViewModel.kt5
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/PlayViewModel.kt6
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SigninViewModel.kt30
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SignupViewModel.kt47
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/UserViewModel.kt8
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/AuthActivity.kt2
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/MainActivity.kt17
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/LoginFragment.kt27
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/PasswordRecoveryFragment.kt24
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt22
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/BaseBottomNavScreen.kt4
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/PlayScreen.kt1
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/presentation/screens/ScoreScreen.kt1
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/presentation/ui/widgets/TopBar.kt6
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)