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)
|
val homeActivityIntent = Intent(this@MainActivity, HomeActivity::class.java)
|
||||||
homeActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
|
homeActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
startActivity(homeActivityIntent)
|
startActivity(homeActivityIntent)
|
||||||
|
} else {
|
||||||
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,36 +1,42 @@
|
|||||||
package com.isolaatti.login
|
package com.isolaatti.login
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
import androidx.activity.OnBackPressedCallback
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.browser.customtabs.CustomTabsIntent
|
import androidx.browser.customtabs.CustomTabsIntent
|
||||||
import androidx.core.widget.doOnTextChanged
|
import androidx.core.widget.doOnTextChanged
|
||||||
import androidx.lifecycle.ViewModelProvider
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.isolaatti.BuildConfig
|
import com.isolaatti.BuildConfig
|
||||||
import com.isolaatti.R
|
import com.isolaatti.R
|
||||||
import com.isolaatti.common.IsolaattiBaseActivity
|
|
||||||
import com.isolaatti.databinding.ActivityLoginBinding
|
import com.isolaatti.databinding.ActivityLoginBinding
|
||||||
import com.isolaatti.home.HomeActivity
|
|
||||||
import com.isolaatti.sign_up.ui.SignUpActivity
|
import com.isolaatti.sign_up.ui.SignUpActivity
|
||||||
import com.isolaatti.utils.Resource
|
import com.isolaatti.utils.Resource
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class LogInActivity: AppCompatActivity() {
|
class LogInActivity : AppCompatActivity() {
|
||||||
|
|
||||||
|
|
||||||
lateinit var viewBinding: ActivityLoginBinding
|
lateinit var viewBinding: ActivityLoginBinding
|
||||||
private val viewModel: LogInViewModel by viewModels()
|
private val viewModel: LogInViewModel by viewModels()
|
||||||
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
|
onBackPressedDispatcher.addCallback(this, object: OnBackPressedCallback(true) {
|
||||||
|
override fun handleOnBackPressed() {
|
||||||
|
setResult(RESULT_CANCELED)
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
viewBinding = ActivityLoginBinding.inflate(layoutInflater)
|
viewBinding = ActivityLoginBinding.inflate(layoutInflater)
|
||||||
setContentView(viewBinding.root)
|
setContentView(viewBinding.root)
|
||||||
|
|
||||||
|
|||||||
@ -18,7 +18,7 @@ class AccountSettingsRepositoryImpl @Inject constructor(
|
|||||||
private val accountSettingsApi: AccountSettingsApi
|
private val accountSettingsApi: AccountSettingsApi
|
||||||
) : AccountSettingsRepository {
|
) : AccountSettingsRepository {
|
||||||
override fun logout(): Flow<Resource<Boolean>> = flow {
|
override fun logout(): Flow<Resource<Boolean>> = flow {
|
||||||
tokenStorage.removeToken()
|
|
||||||
try {
|
try {
|
||||||
val response = accountSettingsApi.signOut().awaitResponse()
|
val response = accountSettingsApi.signOut().awaitResponse()
|
||||||
if(response.isSuccessful) {
|
if(response.isSuccessful) {
|
||||||
@ -26,6 +26,7 @@ class AccountSettingsRepositoryImpl @Inject constructor(
|
|||||||
} else {
|
} else {
|
||||||
emit(Resource.Error(Resource.Error.mapErrorCode(response.code())))
|
emit(Resource.Error(Resource.Error.mapErrorCode(response.code())))
|
||||||
}
|
}
|
||||||
|
tokenStorage.removeToken()
|
||||||
|
|
||||||
} catch (exception: Exception) {
|
} catch (exception: Exception) {
|
||||||
emit(Resource.Error(Resource.Error.ErrorType.NetworkError))
|
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
|
package com.isolaatti.settings.ui
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
import com.isolaatti.MainActivity
|
||||||
import com.isolaatti.R
|
import com.isolaatti.R
|
||||||
import com.isolaatti.databinding.FragmentAccountSettingsBinding
|
import com.isolaatti.databinding.FragmentAccountSettingsBinding
|
||||||
|
import com.isolaatti.settings.presentation.AccountSettingsViewModel
|
||||||
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
|
||||||
|
@AndroidEntryPoint
|
||||||
class AccountSettingsFragment : Fragment() {
|
class AccountSettingsFragment : Fragment() {
|
||||||
private lateinit var binding: FragmentAccountSettingsBinding
|
private lateinit var binding: FragmentAccountSettingsBinding
|
||||||
|
private val viewModel: AccountSettingsViewModel by viewModels()
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
@ -41,6 +48,16 @@ class AccountSettingsFragment : Fragment() {
|
|||||||
binding.logOutButton.setOnClickListener {
|
binding.logOutButton.setOnClickListener {
|
||||||
logout()
|
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() {
|
private fun logout() {
|
||||||
@ -48,7 +65,7 @@ class AccountSettingsFragment : Fragment() {
|
|||||||
.setTitle("Log out?")
|
.setTitle("Log out?")
|
||||||
.setMessage("You will be taken to log in screen...")
|
.setMessage("You will be taken to log in screen...")
|
||||||
.setPositiveButton("Yes, log out") { _, _ ->
|
.setPositiveButton("Yes, log out") { _, _ ->
|
||||||
|
viewModel.logout()
|
||||||
}
|
}
|
||||||
.setNegativeButton(R.string.no, null)
|
.setNegativeButton(R.string.no, null)
|
||||||
.show()
|
.show()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user