feature: cerrar sesion
This commit is contained in:
parent
484f92e531
commit
4bb6c57c38
@ -22,6 +22,8 @@ class MainActivity : ComponentActivity() {
|
||||
val homeActivityIntent = Intent(this@MainActivity, HomeActivity::class.java)
|
||||
homeActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
startActivity(homeActivityIntent)
|
||||
} else {
|
||||
finish()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,22 +1,19 @@
|
||||
package com.isolaatti.login
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.activity.viewModels
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.browser.customtabs.CustomTabsIntent
|
||||
import androidx.core.widget.doOnTextChanged
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.isolaatti.BuildConfig
|
||||
import com.isolaatti.R
|
||||
import com.isolaatti.common.IsolaattiBaseActivity
|
||||
import com.isolaatti.databinding.ActivityLoginBinding
|
||||
import com.isolaatti.home.HomeActivity
|
||||
import com.isolaatti.sign_up.ui.SignUpActivity
|
||||
import com.isolaatti.utils.Resource
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
@ -28,9 +25,18 @@ class LogInActivity: AppCompatActivity() {
|
||||
lateinit var viewBinding: ActivityLoginBinding
|
||||
private val viewModel: LogInViewModel by viewModels()
|
||||
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
onBackPressedDispatcher.addCallback(this, object: OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
setResult(RESULT_CANCELED)
|
||||
finish()
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
viewBinding = ActivityLoginBinding.inflate(layoutInflater)
|
||||
setContentView(viewBinding.root)
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@ class AccountSettingsRepositoryImpl @Inject constructor(
|
||||
private val accountSettingsApi: AccountSettingsApi
|
||||
) : AccountSettingsRepository {
|
||||
override fun logout(): Flow<Resource<Boolean>> = flow {
|
||||
tokenStorage.removeToken()
|
||||
|
||||
try {
|
||||
val response = accountSettingsApi.signOut().awaitResponse()
|
||||
if(response.isSuccessful) {
|
||||
@ -26,6 +26,7 @@ class AccountSettingsRepositoryImpl @Inject constructor(
|
||||
} else {
|
||||
emit(Resource.Error(Resource.Error.mapErrorCode(response.code())))
|
||||
}
|
||||
tokenStorage.removeToken()
|
||||
|
||||
} catch (exception: Exception) {
|
||||
emit(Resource.Error(Resource.Error.ErrorType.NetworkError))
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
package com.isolaatti.settings.presentation
|
||||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.isolaatti.settings.domain.AccountSettingsRepository
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.flowOn
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class AccountSettingsViewModel @Inject constructor(
|
||||
private val accountSettingsRepository: AccountSettingsRepository
|
||||
) : ViewModel() {
|
||||
|
||||
val loggedOut: MutableLiveData<Boolean> = MutableLiveData()
|
||||
fun logout() {
|
||||
viewModelScope.launch {
|
||||
accountSettingsRepository.logout().onEach {
|
||||
loggedOut.postValue(true)
|
||||
}.flowOn(Dispatchers.IO).launchIn(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,17 +1,24 @@
|
||||
package com.isolaatti.settings.ui
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.isolaatti.MainActivity
|
||||
import com.isolaatti.R
|
||||
import com.isolaatti.databinding.FragmentAccountSettingsBinding
|
||||
import com.isolaatti.settings.presentation.AccountSettingsViewModel
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class AccountSettingsFragment : Fragment() {
|
||||
private lateinit var binding: FragmentAccountSettingsBinding
|
||||
private val viewModel: AccountSettingsViewModel by viewModels()
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
@ -41,6 +48,16 @@ class AccountSettingsFragment : Fragment() {
|
||||
binding.logOutButton.setOnClickListener {
|
||||
logout()
|
||||
}
|
||||
|
||||
viewModel.loggedOut.observe(viewLifecycleOwner) {
|
||||
if(it) {
|
||||
val loginIntent = Intent(requireContext(), MainActivity::class.java).apply {
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
|
||||
}
|
||||
startActivity(loginIntent)
|
||||
viewModel.loggedOut.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun logout() {
|
||||
@ -48,7 +65,7 @@ class AccountSettingsFragment : Fragment() {
|
||||
.setTitle("Log out?")
|
||||
.setMessage("You will be taken to log in screen...")
|
||||
.setPositiveButton("Yes, log out") { _, _ ->
|
||||
|
||||
viewModel.logout()
|
||||
}
|
||||
.setNegativeButton(R.string.no, null)
|
||||
.show()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user