diff --git a/android/src/main/java/com/frontegg/android/EmbeddedAuthActivity.kt b/android/src/main/java/com/frontegg/android/EmbeddedAuthActivity.kt index 8386cd1..2aef5b2 100644 --- a/android/src/main/java/com/frontegg/android/EmbeddedAuthActivity.kt +++ b/android/src/main/java/com/frontegg/android/EmbeddedAuthActivity.kt @@ -33,6 +33,7 @@ class EmbeddedAuthActivity : Activity() { consumeIntent(intent) } + override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) outState.putBoolean(DIRECT_LOGIN_ACTION_LAUNCHED, this.directLoginLaunched); diff --git a/android/src/main/java/com/frontegg/android/embedded/FronteggWebView.kt b/android/src/main/java/com/frontegg/android/embedded/FronteggWebView.kt index 5157df9..2fd933a 100644 --- a/android/src/main/java/com/frontegg/android/embedded/FronteggWebView.kt +++ b/android/src/main/java/com/frontegg/android/embedded/FronteggWebView.kt @@ -66,10 +66,19 @@ open class FronteggWebView : WebView { this.addJavascriptInterface(FronteggNativeBridge(context), "FronteggNativeBridge") } - fun loadOauthAuthorize() { - val authorizeUrl = AuthorizeUrlGenerator() - val url = authorizeUrl.generate() - this.loadUrl(url.first) + + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + clearWebView() + } + + private fun clearWebView() { + clearHistory() + loadUrl("about:blank") + onPause() + removeAllViews() + destroy() } } diff --git a/embedded/src/main/java/com/frontegg/demo/NavigationActivity.kt b/embedded/src/main/java/com/frontegg/demo/NavigationActivity.kt index 952c974..9f1be6a 100644 --- a/embedded/src/main/java/com/frontegg/demo/NavigationActivity.kt +++ b/embedded/src/main/java/com/frontegg/demo/NavigationActivity.kt @@ -28,7 +28,9 @@ class NavigationActivity : AppCompatActivity() { private val authenticatedTabs = AppBarConfiguration( setOf( - R.id.navigation_home, R.id.navigation_tenants + R.id.navigation_home, + R.id.navigation_tenants, + R.id.navigation_access_token ) ) private val nonAuthTabs = AppBarConfiguration( diff --git a/embedded/src/main/java/com/frontegg/demo/ui/home/AccessTokenFragment.kt b/embedded/src/main/java/com/frontegg/demo/ui/home/AccessTokenFragment.kt new file mode 100644 index 0000000..0ad9bd9 --- /dev/null +++ b/embedded/src/main/java/com/frontegg/demo/ui/home/AccessTokenFragment.kt @@ -0,0 +1,64 @@ +package com.frontegg.demo.ui.home + +import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.frontegg.android.FronteggAuth +import com.frontegg.demo.databinding.FragmentAccessTokenBinding + +class AccessTokenFragment : Fragment() { + + private var _binding: FragmentAccessTokenBinding? = null + + // This property is only valid between onCreateView and + // onDestroyView. + private val binding get() = _binding!! + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + val homeViewModel = ViewModelProvider(this)[HomeViewModel::class.java] + + _binding = FragmentAccessTokenBinding.inflate(inflater, container, false) + + val root: View = binding.root + + homeViewModel.user.observe(viewLifecycleOwner) { + if (it != null) { + + binding.name.text = it.name + binding.email.text = it.email + } + } + + homeViewModel.accesstoken.observe(viewLifecycleOwner) { + + // this one will be disable in background + // will resume on foreground + Log.w("AccessTokenFragment", "Access token (viewModel): $it") + binding.accessToken.text = it + } + + return root + } + + override fun onResume() { + super.onResume() + + FronteggAuth.instance.accessToken.subscribe { + Log.w("AccessTokenFragment", "Access token(subscribe): ${it.value}") + Log.w("AccessTokenFragment", "Access token(direct): ${FronteggAuth.instance.accessToken.value}") + }; + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} \ No newline at end of file diff --git a/embedded/src/main/java/com/frontegg/demo/ui/home/HomeFragment.kt b/embedded/src/main/java/com/frontegg/demo/ui/home/HomeFragment.kt index fb1ac51..f641639 100644 --- a/embedded/src/main/java/com/frontegg/demo/ui/home/HomeFragment.kt +++ b/embedded/src/main/java/com/frontegg/demo/ui/home/HomeFragment.kt @@ -2,12 +2,9 @@ package com.frontegg.demo.ui.home import android.graphics.Color import android.os.Bundle -import android.os.Handler -import android.os.Looper import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide diff --git a/embedded/src/main/java/com/frontegg/demo/ui/home/HomeViewModel.kt b/embedded/src/main/java/com/frontegg/demo/ui/home/HomeViewModel.kt index 22fe263..06eca8b 100644 --- a/embedded/src/main/java/com/frontegg/demo/ui/home/HomeViewModel.kt +++ b/embedded/src/main/java/com/frontegg/demo/ui/home/HomeViewModel.kt @@ -18,8 +18,17 @@ class HomeViewModel : ViewModel() { } } + private val _accesstoken = MutableLiveData().apply { + FronteggAuth.instance.accessToken.subscribe { + Handler(Looper.getMainLooper()).post { + value = it.value + } + } + } + val user: LiveData = _user + val accesstoken: LiveData = _accesstoken } \ No newline at end of file diff --git a/embedded/src/main/res/layout/fragment_access_token.xml b/embedded/src/main/res/layout/fragment_access_token.xml new file mode 100644 index 0000000..f5cdacf --- /dev/null +++ b/embedded/src/main/res/layout/fragment_access_token.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/embedded/src/main/res/layout/fragment_home.xml b/embedded/src/main/res/layout/fragment_home.xml index 4718010..2856919 100644 --- a/embedded/src/main/res/layout/fragment_home.xml +++ b/embedded/src/main/res/layout/fragment_home.xml @@ -61,6 +61,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/email" /> +