Skip to content

Commit

Permalink
Logout works
Browse files Browse the repository at this point in the history
  • Loading branch information
itszechs committed Jun 24, 2022
1 parent a9b854c commit 6543b8f
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 0 deletions.
47 changes: 47 additions & 0 deletions app/src/main/java/zechs/drive/stream/ui/home/HomeFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,21 @@ import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import com.google.android.material.button.MaterialButton
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import zechs.drive.stream.R
import zechs.drive.stream.databinding.FragmentHomeBinding
import zechs.drive.stream.ui.BaseFragment
import zechs.drive.stream.utils.ext.navigateSafe


class HomeFragment : BaseFragment() {

companion object {
Expand All @@ -21,6 +29,8 @@ class HomeFragment : BaseFragment() {
private var _binding: FragmentHomeBinding? = null
private val binding get() = _binding!!

private val viewModel by activityViewModels<HomeViewModel>()

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
Expand Down Expand Up @@ -75,6 +85,8 @@ class HomeFragment : BaseFragment() {

}

setupToolbar()
observeLogOutState()
}

private fun <T : MaterialButton> navigateToFiles(
Expand All @@ -90,6 +102,41 @@ class HomeFragment : BaseFragment() {
}
}

private fun setupToolbar() {
binding.toolbar.setOnMenuItemClickListener { item ->
if (item.itemId == R.id.action_logOut) {
MaterialAlertDialogBuilder(context!!)
.setTitle(getString(R.string.log_out_dialog_title))
.setNegativeButton(getString(R.string.no)) { dialog, _ ->
dialog.dismiss()
}
.setPositiveButton(getString(R.string.yes)) { dialog, _ ->
dialog.dismiss()
Log.d(TAG, "Logging out...")
viewModel.logOut()
}
.show()
return@setOnMenuItemClickListener true
}
return@setOnMenuItemClickListener false
}
}

private fun observeLogOutState() {
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.hasLoggedOut.collect {
if (it) {
// restart activity
activity!!.finish()
delay(250L)
activity!!.startActivity(activity!!.intent)
}
}
}
}
}

override fun onDestroyView() {
super.onDestroyView()
_binding = null
Expand Down
29 changes: 29 additions & 0 deletions app/src/main/java/zechs/drive/stream/ui/home/HomeViewModel.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package zechs.drive.stream.ui.home

import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
import zechs.drive.stream.data.remote.DriveHelper
import javax.inject.Inject

@HiltViewModel
class HomeViewModel @Inject constructor(
private val driveHelper: DriveHelper
) : ViewModel() {

private val _hasLoggedOut = MutableStateFlow(false)
val hasLoggedOut = _hasLoggedOut.asStateFlow()

fun logOut() = viewModelScope.launch {
delay(250L)
val client = driveHelper.getClient()
// client.revokeAccess()
client.signOut()
_hasLoggedOut.value = true
}

}

0 comments on commit 6543b8f

Please sign in to comment.