diff options
| author | Alberto Duarte (PWC) <alberto.duarte.delgado@pwc.com> | 2023-06-05 16:39:48 +0100 |
|---|---|---|
| committer | Alberto Duarte (PWC) <alberto.duarte.delgado@pwc.com> | 2023-06-05 16:39:48 +0100 |
| commit | 710cdf648c2f01d64cc8c7e12e3aef8b44880790 (patch) | |
| tree | 4cb8e738211ceb6085dbdf47def1da67f938273d | |
| parent | 502fe9a6493b74ea231d02bcaae24e8e87eda98b (diff) | |
firebase
11 files changed, 90 insertions, 8 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 58e98da..449cc20 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,7 +13,7 @@ android:theme="@style/Theme.ProyectoAndroid" tools:targetApi="31"> <activity - android:name=".AuthActivity" + android:name=".presentation.activities.AuthActivity" android:exported="true" android:label="@string/app_name" android:theme="@style/Theme.ProyectoAndroid"> 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 new file mode 100644 index 0000000..8f75685 --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SigninDataSource.kt @@ -0,0 +1,7 @@ +package com.frannazario.proyectoandroid.data.datasources + +import androidx.lifecycle.LiveData + +interface SigninDataSource { + fun register(email: String, password: String): LiveData<SigninDataSource> +}
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SigninRemoteDataSource.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SigninRemoteDataSource.kt new file mode 100644 index 0000000..f319b40 --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SigninRemoteDataSource.kt @@ -0,0 +1,24 @@ +package com.frannazario.proyectoandroid.data.datasources + +import com.google.firebase.auth.FirebaseAuth +import com.google.firebase.ktx.Firebase + +interface SigninRemoteDataSource: SigninDataSource{ + private val auth = FirebaseAuth.getInstance() + + fun register(email: String, password: String): LiveData<SigninResponse> { + val resultLiveData = MutableLiveData<SigninResponse>() + + auth.createUserWithEmailAndPassword(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) + } + } + return resultLiveData + } +}
\ No newline at end of file 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 new file mode 100644 index 0000000..974ed83 --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SigninRepository.kt @@ -0,0 +1,9 @@ +package com.frannazario.proyectoandroid.data.repositories + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import com.frannazario.proyectoandroid.data.responses.SigninResponse +import com.google.firebase.auth.FirebaseAuth + +class SigninRepository { +}
\ 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 new file mode 100644 index 0000000..df30b8c --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/responses/SigninResponse.kt @@ -0,0 +1,8 @@ +package com.frannazario.proyectoandroid.data.responses + +import com.google.firebase.auth.FirebaseUser + +sealed class SigninResponse { + data class Success(val user: FirebaseUser?): SigninResponse() + data class Error(val error: String): SigninResponse() +}
\ No newline at end of file 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 new file mode 100644 index 0000000..8ed890d --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SigninViewModel.kt @@ -0,0 +1,21 @@ +package com.frannazario.proyectoandroid.data.viewmodels + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import com.frannazario.proyectoandroid.data.repositories.SigninRepository +import com.frannazario.proyectoandroid.data.responses.SigninResponse + +class SigninViewModel(private val repository: SigninRepository = SigninRepository()): ViewModel() { + + private val signinResponseLiveData = MutableLiveData<SigninResponse>() + + fun getRegisterResultLiveData(): LiveData<SigninResponse> { + return signinResponseLiveData + } + + fun register(email: String, password: String) { + val response = repository.register(email, password) + signinResponseLiveData.postValue(response.value) + } +}
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/AuthActivity.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/AuthActivity.kt index cf642b0..ea3c927 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/AuthActivity.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/AuthActivity.kt @@ -1,4 +1,4 @@ -package com.frannazario.proyectoandroid +package com.frannazario.proyectoandroid.presentation.activities import android.os.Bundle import androidx.fragment.app.FragmentActivity diff --git a/app/src/main/java/com/frannazario/proyectoandroid/LoginFragment.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/LoginFragment.kt index 3bf3107..fcabbe1 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/LoginFragment.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/LoginFragment.kt @@ -1,4 +1,4 @@ -package com.frannazario.proyectoandroid +package com.frannazario.proyectoandroid.presentation.fragments import android.os.Bundle import android.view.LayoutInflater @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController +import com.frannazario.proyectoandroid.R import com.frannazario.proyectoandroid.databinding.FragmentLoginBinding class LoginFragment: Fragment() { diff --git a/app/src/main/java/com/frannazario/proyectoandroid/PasswordRecoveryFragment.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/PasswordRecoveryFragment.kt index f330279..35b56d0 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/PasswordRecoveryFragment.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/PasswordRecoveryFragment.kt @@ -1,4 +1,4 @@ -package com.frannazario.proyectoandroid +package com.frannazario.proyectoandroid.presentation.fragments import android.os.Bundle import android.view.LayoutInflater diff --git a/app/src/main/java/com/frannazario/proyectoandroid/SigninFragment.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt index ccec5af..c533991 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/SigninFragment.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt @@ -1,14 +1,21 @@ -package com.frannazario.proyectoandroid +package com.frannazario.proyectoandroid.presentation.fragments import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import com.frannazario.proyectoandroid.data.viewmodels.SigninViewModel import com.frannazario.proyectoandroid.databinding.FragmentSigninBinding class SigninFragment: Fragment() { private lateinit var binding: FragmentSigninBinding + private lateinit var viewModel: SigninViewModel + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + viewModel= SigninViewModel() + } override fun onCreateView( inflater: LayoutInflater, @@ -18,4 +25,9 @@ class SigninFragment: Fragment() { binding = FragmentSigninBinding.inflate(inflater, container, false) return binding.root } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + viewModel + } }
\ No newline at end of file diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 969031b..cb1a441 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -7,7 +7,7 @@ <fragment android:id="@+id/login_fragment" - android:name="com.frannazario.proyectoandroid.LoginFragment" + android:name="com.frannazario.proyectoandroid.presentation.fragments.LoginFragment" android:label="Login" tools:layout="@layout/fragment_login"> @@ -23,13 +23,13 @@ <fragment android:id="@+id/signin_fragment" - android:name="com.frannazario.proyectoandroid.SigninFragment" + android:name="com.frannazario.proyectoandroid.presentation.fragments.SigninFragment" android:label="Sign in" tools:layout="@layout/fragment_signin" /> <fragment android:id="@+id/password_recovery_fragment" - android:name="com.frannazario.proyectoandroid.PasswordRecoveryFragment" + android:name="com.frannazario.proyectoandroid.presentation.fragments.PasswordRecoveryFragment" android:label="Password recovery" tools:layout="@layout/fragment_password_recovery" /> |