diff options
Diffstat (limited to 'app/src')
15 files changed, 128 insertions, 31 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/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..4290c0a --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SigninDataSource.kt @@ -0,0 +1,8 @@ +package com.frannazario.proyectoandroid.data.datasources + +import androidx.lifecycle.LiveData +import com.frannazario.proyectoandroid.data.responses.SigninResponse + +interface SigninDataSource { + fun register(email: String, password: String): LiveData<SigninResponse> +}
\ 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..7841045 --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/datasources/SigninRemoteDataSource.kt @@ -0,0 +1,26 @@ +package com.frannazario.proyectoandroid.data.datasources + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import com.frannazario.proyectoandroid.data.responses.SigninResponse +import com.google.firebase.auth.FirebaseAuth + +class SigninRemoteDataSource: SigninDataSource { + private val auth = FirebaseAuth.getInstance() + + override 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..c5c6fc9 --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/repositories/SigninRepository.kt @@ -0,0 +1,16 @@ +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.datasources.SigninRemoteDataSource +import com.frannazario.proyectoandroid.data.responses.SigninResponse +import com.google.firebase.auth.FirebaseAuth + +class SigninRepository( + private val remoteDataSource: SigninDataSource = SigninRemoteDataSource() +) { + fun register(email: String, password: String): LiveData<SigninResponse> { + return remoteDataSource.register(email, password) + } +}
\ 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..e7f70ed --- /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 getSigninResultLiveData(): 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/presentation/fragments/SigninFragment.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt new file mode 100644 index 0000000..2b4f40e --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt @@ -0,0 +1,38 @@ +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.responses.SigninResponse +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.getSigninResultLiveData().observe(viewLifecycleOwner) { response -> + when (response) { + is SigninResponse.Success -> {} + is SigninResponse.Error -> {} + } + } + } +}
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/ui/theme/Color.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/ui/theme/Color.kt index d982329..d31dad1 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/ui/theme/Color.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/ui/theme/Color.kt @@ -1,4 +1,4 @@ -package com.frannazario.proyectoandroid.ui.theme +package com.frannazario.proyectoandroid.presentation.ui.theme import androidx.compose.ui.graphics.Color diff --git a/app/src/main/java/com/frannazario/proyectoandroid/ui/theme/Theme.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/ui/theme/Theme.kt index 8b02c04..4693ca1 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/ui/theme/Theme.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/ui/theme/Theme.kt @@ -1,4 +1,4 @@ -package com.frannazario.proyectoandroid.ui.theme +package com.frannazario.proyectoandroid.presentation.ui.theme import android.app.Activity import android.os.Build diff --git a/app/src/main/java/com/frannazario/proyectoandroid/ui/theme/Type.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/ui/theme/Type.kt index 4bae58a..5e3a43b 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/ui/theme/Type.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/ui/theme/Type.kt @@ -1,4 +1,4 @@ -package com.frannazario.proyectoandroid.ui.theme +package com.frannazario.proyectoandroid.presentation.ui.theme import androidx.compose.material3.Typography import androidx.compose.ui.text.TextStyle 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" /> |