From 710cdf648c2f01d64cc8c7e12e3aef8b44880790 Mon Sep 17 00:00:00 2001 From: "Alberto Duarte (PWC)" Date: Mon, 5 Jun 2023 16:39:48 +0100 Subject: firebase --- app/src/main/AndroidManifest.xml | 2 +- .../frannazario/proyectoandroid/AuthActivity.kt | 15 ---------- .../frannazario/proyectoandroid/LoginFragment.kt | 28 ------------------ .../proyectoandroid/PasswordRecoveryFragment.kt | 21 -------------- .../frannazario/proyectoandroid/SigninFragment.kt | 21 -------------- .../data/datasources/SigninDataSource.kt | 7 +++++ .../data/datasources/SigninRemoteDataSource.kt | 24 ++++++++++++++++ .../data/repositories/SigninRepository.kt | 9 ++++++ .../data/responses/SigninResponse.kt | 8 ++++++ .../data/viewmodels/SigninViewModel.kt | 21 ++++++++++++++ .../presentation/activities/AuthActivity.kt | 15 ++++++++++ .../presentation/fragments/LoginFragment.kt | 29 +++++++++++++++++++ .../fragments/PasswordRecoveryFragment.kt | 21 ++++++++++++++ .../presentation/fragments/SigninFragment.kt | 33 ++++++++++++++++++++++ app/src/main/res/navigation/nav_graph.xml | 6 ++-- 15 files changed, 171 insertions(+), 89 deletions(-) delete mode 100644 app/src/main/java/com/frannazario/proyectoandroid/AuthActivity.kt delete mode 100644 app/src/main/java/com/frannazario/proyectoandroid/LoginFragment.kt delete mode 100644 app/src/main/java/com/frannazario/proyectoandroid/PasswordRecoveryFragment.kt delete mode 100644 app/src/main/java/com/frannazario/proyectoandroid/SigninFragment.kt create mode 100644 app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SigninDataSource.kt create mode 100644 app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SigninRemoteDataSource.kt create mode 100644 app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SigninRepository.kt create mode 100644 app/src/main/java/com/frannazario/proyectoandroid/data/responses/SigninResponse.kt create mode 100644 app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SigninViewModel.kt create mode 100644 app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/AuthActivity.kt create mode 100644 app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/LoginFragment.kt create mode 100644 app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/PasswordRecoveryFragment.kt create mode 100644 app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt 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"> diff --git a/app/src/main/java/com/frannazario/proyectoandroid/AuthActivity.kt b/app/src/main/java/com/frannazario/proyectoandroid/AuthActivity.kt deleted file mode 100644 index cf642b0..0000000 --- a/app/src/main/java/com/frannazario/proyectoandroid/AuthActivity.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.frannazario.proyectoandroid - -import android.os.Bundle -import androidx.fragment.app.FragmentActivity -import com.frannazario.proyectoandroid.databinding.ActivityAuthBinding - -class AuthActivity : FragmentActivity() { - private lateinit var binding: ActivityAuthBinding - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = ActivityAuthBinding.inflate(layoutInflater) - setContentView(binding.root) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/LoginFragment.kt b/app/src/main/java/com/frannazario/proyectoandroid/LoginFragment.kt deleted file mode 100644 index 3bf3107..0000000 --- a/app/src/main/java/com/frannazario/proyectoandroid/LoginFragment.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.frannazario.proyectoandroid - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.navigation.fragment.findNavController -import com.frannazario.proyectoandroid.databinding.FragmentLoginBinding - -class LoginFragment: Fragment() { - private lateinit var binding: FragmentLoginBinding - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = FragmentLoginBinding.inflate(inflater, container, false) - binding.signinBtn.setOnClickListener { - findNavController().navigate(R.id.navigate_from_loginfragment_to_signinfragment) - } - binding.forgetPasswordBtn.setOnClickListener { - findNavController().navigate(R.id.navigate_from_loginfragment_to_passwordrecoveryfragment) - } - return binding.root - } -} \ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/PasswordRecoveryFragment.kt b/app/src/main/java/com/frannazario/proyectoandroid/PasswordRecoveryFragment.kt deleted file mode 100644 index f330279..0000000 --- a/app/src/main/java/com/frannazario/proyectoandroid/PasswordRecoveryFragment.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.frannazario.proyectoandroid - -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.databinding.FragmentPasswordRecoveryBinding - -class PasswordRecoveryFragment: Fragment() { - private lateinit var binding: FragmentPasswordRecoveryBinding - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = FragmentPasswordRecoveryBinding.inflate(inflater, container, false) - return binding.root - } -} \ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/SigninFragment.kt b/app/src/main/java/com/frannazario/proyectoandroid/SigninFragment.kt deleted file mode 100644 index ccec5af..0000000 --- a/app/src/main/java/com/frannazario/proyectoandroid/SigninFragment.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.frannazario.proyectoandroid - -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.databinding.FragmentSigninBinding - -class SigninFragment: Fragment() { - private lateinit var binding: FragmentSigninBinding - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = FragmentSigninBinding.inflate(inflater, container, false) - return binding.root - } -} \ No newline at end of file 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 +} \ 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 { + val resultLiveData = MutableLiveData() + + 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() + + fun getRegisterResultLiveData(): LiveData { + 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/presentation/activities/AuthActivity.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/AuthActivity.kt new file mode 100644 index 0000000..ea3c927 --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/activities/AuthActivity.kt @@ -0,0 +1,15 @@ +package com.frannazario.proyectoandroid.presentation.activities + +import android.os.Bundle +import androidx.fragment.app.FragmentActivity +import com.frannazario.proyectoandroid.databinding.ActivityAuthBinding + +class AuthActivity : FragmentActivity() { + private lateinit var binding: ActivityAuthBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityAuthBinding.inflate(layoutInflater) + setContentView(binding.root) + } +} \ No newline at end of file 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 new file mode 100644 index 0000000..fcabbe1 --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/LoginFragment.kt @@ -0,0 +1,29 @@ +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 androidx.navigation.fragment.findNavController +import com.frannazario.proyectoandroid.R +import com.frannazario.proyectoandroid.databinding.FragmentLoginBinding + +class LoginFragment: Fragment() { + private lateinit var binding: FragmentLoginBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + binding = FragmentLoginBinding.inflate(inflater, container, false) + binding.signinBtn.setOnClickListener { + findNavController().navigate(R.id.navigate_from_loginfragment_to_signinfragment) + } + binding.forgetPasswordBtn.setOnClickListener { + findNavController().navigate(R.id.navigate_from_loginfragment_to_passwordrecoveryfragment) + } + return binding.root + } +} \ No newline at end of file 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 new file mode 100644 index 0000000..35b56d0 --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/PasswordRecoveryFragment.kt @@ -0,0 +1,21 @@ +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.databinding.FragmentPasswordRecoveryBinding + +class PasswordRecoveryFragment: Fragment() { + private lateinit var binding: FragmentPasswordRecoveryBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + binding = FragmentPasswordRecoveryBinding.inflate(inflater, container, false) + return binding.root + } +} \ No newline at end of file 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 new file mode 100644 index 0000000..c533991 --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt @@ -0,0 +1,33 @@ +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, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + 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 @@ @@ -23,13 +23,13 @@ -- cgit v1.2.3-54-g00ecf