Custom tab: dark theme support.
This commit is contained in:
parent
dcc8e7b732
commit
a09ecafb07
2 changed files with 6 additions and 3 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue