mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-04 10:12:05 +00:00
Custom tab: dark theme support.
This commit is contained in:
committed by
Benoit Marty
parent
f4809100d0
commit
e3c781ad76
+4
-1
@@ -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
|
||||||
|
|||||||
+2
-2
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user