Skip to content

Commit

Permalink
Proper navigation after auth flow
Browse files Browse the repository at this point in the history
  • Loading branch information
PStrelchenko committed Aug 16, 2020
1 parent 1bcea4f commit c73995f
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 0 deletions.
Expand Up @@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.View
import androidx.activity.OnBackPressedCallback
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.navigation.Navigation
import androidx.navigation.fragment.findNavController
import com.aaglobal.jnc_playground.R
Expand All @@ -16,18 +17,24 @@ class FinishAuthFragment : Fragment(R.layout.fragment_finish_auth) {
const val AUTH_FLOW_RESULT_KEY = "auth_flow_result"
}

private val finishAuthViewModel: FinishAuthViewModel by viewModels()

private var callback: OnBackPressedCallback? = null

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

fragment_finish_auth__button.setOnClickListener {
// Save hasAuthData flag in prefs
finishAuthViewModel.setFinishAuthFlag()

// Navigate back from auth flow
Navigation.findNavController(
requireActivity(),
R.id.activity_root__fragment__nav_host
).popBackStack(R.id.auth__nav_graph, true)

// Send signal about finishing flow
findNavController().currentBackStackEntry?.savedStateHandle?.set(AUTH_FLOW_RESULT_KEY, true)
}

Expand Down
@@ -0,0 +1,16 @@
package com.aaglobal.jnc_playground.ui.auth

import androidx.lifecycle.ViewModel
import com.aaglobal.jnc_playground.di.GlobalDI


class FinishAuthViewModel : ViewModel() {

private val authRepository = GlobalDI.getAuthRepository()


fun setFinishAuthFlag() {
authRepository.putHasAuthData(true)
}

}
Expand Up @@ -7,6 +7,7 @@ import androidx.fragment.app.viewModels
import androidx.lifecycle.Observer
import androidx.navigation.fragment.findNavController
import com.aaglobal.jnc_playground.R
import com.aaglobal.jnc_playground.ui.auth.FinishAuthFragment
import com.aaglobal.jnc_playground.ui.auth.StartAuthFragmentArgs


Expand All @@ -18,6 +19,15 @@ class SplashFragment : Fragment(R.layout.fragment_splash) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

val authResult = findNavController().currentBackStackEntry
?.savedStateHandle
?.remove<Boolean>(FinishAuthFragment.AUTH_FLOW_RESULT_KEY) == true

if (authResult) {
navigateToMainScreen()
return
}

// Navigate with SingleLiveEvent from Splash screen
splashViewModel.splashNavCommand.observe(viewLifecycleOwner, Observer { splashNavCommand ->
when (splashNavCommand) {
Expand Down

0 comments on commit c73995f

Please sign in to comment.