Custom tab: dark theme support.

This commit is contained in:
Benoit Marty 2023-04-24 18:00:53 +02:00 committed by Benoit Marty
parent dcc8e7b732
commit a09ecafb07
2 changed files with 6 additions and 3 deletions

View file

@ -39,6 +39,7 @@ import io.element.android.features.login.impl.root.LoginRootNode
import io.element.android.libraries.architecture.BackstackNode import io.element.android.libraries.architecture.BackstackNode
import io.element.android.libraries.architecture.animation.rememberDefaultTransitionHandler import io.element.android.libraries.architecture.animation.rememberDefaultTransitionHandler
import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.createNode
import io.element.android.libraries.designsystem.theme.ElementTheme
import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.AppScope
import io.element.android.libraries.matrix.api.auth.OidcDetails import io.element.android.libraries.matrix.api.auth.OidcDetails
import kotlinx.parcelize.Parcelize import kotlinx.parcelize.Parcelize
@ -58,6 +59,7 @@ class LoginFlowNode @AssistedInject constructor(
plugins = plugins, plugins = plugins,
) { ) {
private var activity: Activity? = null private var activity: Activity? = null
private var darkTheme: Boolean = false
sealed interface NavTarget : Parcelable { sealed interface NavTarget : Parcelable {
@Parcelize @Parcelize
@ -81,7 +83,7 @@ class LoginFlowNode @AssistedInject constructor(
override fun onOidcDetails(oidcDetails: OidcDetails) { override fun onOidcDetails(oidcDetails: OidcDetails) {
if (customTabAvailabilityChecker.supportCustomTab()) { if (customTabAvailabilityChecker.supportCustomTab()) {
// In this case open a Chrome Custom tab // In this case open a Chrome Custom tab
activity?.let { customTabHandler.open(it, oidcDetails.url) } activity?.let { customTabHandler.open(it, darkTheme, oidcDetails.url) }
} else { } else {
// Fallback to WebView mode // Fallback to WebView mode
backstack.push(NavTarget.OidcView(oidcDetails)) backstack.push(NavTarget.OidcView(oidcDetails))
@ -102,6 +104,7 @@ class LoginFlowNode @AssistedInject constructor(
@Composable @Composable
override fun View(modifier: Modifier) { override fun View(modifier: Modifier) {
activity = LocalContext.current as? Activity activity = LocalContext.current as? Activity
darkTheme = !ElementTheme.colors.isLight
DisposableEffect(lifecycle) { DisposableEffect(lifecycle) {
onDispose { onDispose {
activity = null activity = null

View file

@ -72,7 +72,7 @@ class CustomTabHandler @Inject constructor(
customTabsServiceConnection = null customTabsServiceConnection = null
} }
fun open(activity: Activity, url: String) { fun open(activity: Activity, darkTheme: Boolean, url: String) {
activity.openUrlInChromeCustomTab(customTabsSession, false, url) activity.openUrlInChromeCustomTab(customTabsSession, darkTheme, url)
} }
} }