Use right colors on ForcedDarkElementTheme
This commit is contained in:
parent
82c6aca7e5
commit
9af694b4a2
6 changed files with 43 additions and 4 deletions
|
|
@ -28,6 +28,7 @@ dependencies {
|
||||||
api(projects.features.messages.api)
|
api(projects.features.messages.api)
|
||||||
implementation(projects.appconfig)
|
implementation(projects.appconfig)
|
||||||
implementation(projects.features.call.api)
|
implementation(projects.features.call.api)
|
||||||
|
implementation(projects.features.enterprise.api)
|
||||||
implementation(projects.features.location.api)
|
implementation(projects.features.location.api)
|
||||||
implementation(projects.features.poll.api)
|
implementation(projects.features.poll.api)
|
||||||
implementation(projects.features.roomcall.api)
|
implementation(projects.features.roomcall.api)
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,9 @@
|
||||||
package io.element.android.features.messages.impl.attachments.preview
|
package io.element.android.features.messages.impl.attachments.preview
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.collectAsState
|
||||||
|
import androidx.compose.runtime.getValue
|
||||||
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import com.bumble.appyx.core.modality.BuildContext
|
import com.bumble.appyx.core.modality.BuildContext
|
||||||
import com.bumble.appyx.core.node.Node
|
import com.bumble.appyx.core.node.Node
|
||||||
|
|
@ -15,12 +18,15 @@ import com.bumble.appyx.core.plugin.Plugin
|
||||||
import dev.zacsweers.metro.Assisted
|
import dev.zacsweers.metro.Assisted
|
||||||
import dev.zacsweers.metro.AssistedInject
|
import dev.zacsweers.metro.AssistedInject
|
||||||
import io.element.android.annotations.ContributesNode
|
import io.element.android.annotations.ContributesNode
|
||||||
|
import io.element.android.compound.colors.SemanticColorsLightDark
|
||||||
import io.element.android.compound.theme.ForcedDarkElementTheme
|
import io.element.android.compound.theme.ForcedDarkElementTheme
|
||||||
|
import io.element.android.features.enterprise.api.EnterpriseService
|
||||||
import io.element.android.features.messages.impl.attachments.Attachment
|
import io.element.android.features.messages.impl.attachments.Attachment
|
||||||
import io.element.android.libraries.architecture.NodeInputs
|
import io.element.android.libraries.architecture.NodeInputs
|
||||||
import io.element.android.libraries.architecture.inputs
|
import io.element.android.libraries.architecture.inputs
|
||||||
import io.element.android.libraries.di.RoomScope
|
import io.element.android.libraries.di.RoomScope
|
||||||
import io.element.android.libraries.matrix.api.core.EventId
|
import io.element.android.libraries.matrix.api.core.EventId
|
||||||
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.matrix.api.timeline.Timeline
|
import io.element.android.libraries.matrix.api.timeline.Timeline
|
||||||
import io.element.android.libraries.mediaviewer.api.local.LocalMediaRenderer
|
import io.element.android.libraries.mediaviewer.api.local.LocalMediaRenderer
|
||||||
|
|
||||||
|
|
@ -31,6 +37,8 @@ class AttachmentsPreviewNode(
|
||||||
@Assisted plugins: List<Plugin>,
|
@Assisted plugins: List<Plugin>,
|
||||||
presenterFactory: AttachmentsPreviewPresenter.Factory,
|
presenterFactory: AttachmentsPreviewPresenter.Factory,
|
||||||
private val localMediaRenderer: LocalMediaRenderer,
|
private val localMediaRenderer: LocalMediaRenderer,
|
||||||
|
private val sessionId: SessionId,
|
||||||
|
private val enterpriseService: EnterpriseService,
|
||||||
) : Node(buildContext, plugins = plugins) {
|
) : Node(buildContext, plugins = plugins) {
|
||||||
data class Inputs(
|
data class Inputs(
|
||||||
val attachment: Attachment,
|
val attachment: Attachment,
|
||||||
|
|
@ -53,7 +61,12 @@ class AttachmentsPreviewNode(
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
override fun View(modifier: Modifier) {
|
override fun View(modifier: Modifier) {
|
||||||
ForcedDarkElementTheme {
|
val colors by remember {
|
||||||
|
enterpriseService.semanticColorsFlow(sessionId = sessionId)
|
||||||
|
}.collectAsState(SemanticColorsLightDark.default)
|
||||||
|
ForcedDarkElementTheme(
|
||||||
|
colors = colors,
|
||||||
|
) {
|
||||||
val state = presenter.present()
|
val state = presenter.present()
|
||||||
AttachmentsPreviewView(
|
AttachmentsPreviewView(
|
||||||
state = state,
|
state = state,
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.DisposableEffect
|
import androidx.compose.runtime.DisposableEffect
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.graphics.toArgb
|
import androidx.compose.ui.graphics.toArgb
|
||||||
|
import io.element.android.compound.colors.SemanticColorsLightDark
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Can be used to force a composable in dark theme.
|
* Can be used to force a composable in dark theme.
|
||||||
|
|
@ -23,6 +24,7 @@ import androidx.compose.ui.graphics.toArgb
|
||||||
*/
|
*/
|
||||||
@Composable
|
@Composable
|
||||||
fun ForcedDarkElementTheme(
|
fun ForcedDarkElementTheme(
|
||||||
|
colors: SemanticColorsLightDark,
|
||||||
lightStatusBar: Boolean = false,
|
lightStatusBar: Boolean = false,
|
||||||
content: @Composable () -> Unit,
|
content: @Composable () -> Unit,
|
||||||
) {
|
) {
|
||||||
|
|
@ -47,5 +49,11 @@ fun ForcedDarkElementTheme(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ElementTheme(darkTheme = true, lightStatusBar = lightStatusBar, content = content)
|
ElementTheme(
|
||||||
|
darkTheme = true,
|
||||||
|
compoundLight = colors.light,
|
||||||
|
compoundDark = colors.dark,
|
||||||
|
lightStatusBar = lightStatusBar,
|
||||||
|
content = content,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import com.github.takahirom.roborazzi.captureRoboImage
|
import com.github.takahirom.roborazzi.captureRoboImage
|
||||||
|
import io.element.android.compound.colors.SemanticColorsLightDark
|
||||||
import io.element.android.compound.screenshot.utils.screenshotFile
|
import io.element.android.compound.screenshot.utils.screenshotFile
|
||||||
import io.element.android.compound.theme.ElementTheme
|
import io.element.android.compound.theme.ElementTheme
|
||||||
import io.element.android.compound.theme.ForcedDarkElementTheme
|
import io.element.android.compound.theme.ForcedDarkElementTheme
|
||||||
|
|
@ -42,7 +43,9 @@ class ForcedDarkElementThemeTest {
|
||||||
verticalArrangement = Arrangement.spacedBy(10.dp)
|
verticalArrangement = Arrangement.spacedBy(10.dp)
|
||||||
) {
|
) {
|
||||||
Text(text = "Outside")
|
Text(text = "Outside")
|
||||||
ForcedDarkElementTheme {
|
ForcedDarkElementTheme(
|
||||||
|
colors = SemanticColorsLightDark.default,
|
||||||
|
) {
|
||||||
Surface {
|
Surface {
|
||||||
Box(modifier = Modifier.fillMaxSize()) {
|
Box(modifier = Modifier.fillMaxSize()) {
|
||||||
Text(text = "Inside ForcedDarkElementTheme", modifier = Modifier.align(Alignment.Center))
|
Text(text = "Inside ForcedDarkElementTheme", modifier = Modifier.align(Alignment.Center))
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ dependencies {
|
||||||
implementation(libs.vanniktech.blurhash)
|
implementation(libs.vanniktech.blurhash)
|
||||||
implementation(libs.telephoto.flick)
|
implementation(libs.telephoto.flick)
|
||||||
|
|
||||||
|
implementation(projects.features.enterprise.api)
|
||||||
implementation(projects.features.viewfolder.api)
|
implementation(projects.features.viewfolder.api)
|
||||||
implementation(projects.libraries.androidutils)
|
implementation(projects.libraries.androidutils)
|
||||||
implementation(projects.libraries.architecture)
|
implementation(projects.libraries.architecture)
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,9 @@
|
||||||
package io.element.android.libraries.mediaviewer.impl.viewer
|
package io.element.android.libraries.mediaviewer.impl.viewer
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.collectAsState
|
||||||
|
import androidx.compose.runtime.getValue
|
||||||
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import com.bumble.appyx.core.modality.BuildContext
|
import com.bumble.appyx.core.modality.BuildContext
|
||||||
import com.bumble.appyx.core.node.Node
|
import com.bumble.appyx.core.node.Node
|
||||||
|
|
@ -16,13 +19,16 @@ import com.bumble.appyx.core.plugin.plugins
|
||||||
import dev.zacsweers.metro.Assisted
|
import dev.zacsweers.metro.Assisted
|
||||||
import dev.zacsweers.metro.AssistedInject
|
import dev.zacsweers.metro.AssistedInject
|
||||||
import io.element.android.annotations.ContributesNode
|
import io.element.android.annotations.ContributesNode
|
||||||
|
import io.element.android.compound.colors.SemanticColorsLightDark
|
||||||
import io.element.android.compound.theme.ForcedDarkElementTheme
|
import io.element.android.compound.theme.ForcedDarkElementTheme
|
||||||
|
import io.element.android.features.enterprise.api.EnterpriseService
|
||||||
import io.element.android.features.viewfolder.api.TextFileViewer
|
import io.element.android.features.viewfolder.api.TextFileViewer
|
||||||
import io.element.android.libraries.architecture.inputs
|
import io.element.android.libraries.architecture.inputs
|
||||||
import io.element.android.libraries.audio.api.AudioFocus
|
import io.element.android.libraries.audio.api.AudioFocus
|
||||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||||
import io.element.android.libraries.di.RoomScope
|
import io.element.android.libraries.di.RoomScope
|
||||||
import io.element.android.libraries.matrix.api.core.EventId
|
import io.element.android.libraries.matrix.api.core.EventId
|
||||||
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.matrix.api.media.MatrixMediaLoader
|
import io.element.android.libraries.matrix.api.media.MatrixMediaLoader
|
||||||
import io.element.android.libraries.matrix.api.timeline.Timeline
|
import io.element.android.libraries.matrix.api.timeline.Timeline
|
||||||
import io.element.android.libraries.mediaviewer.api.MediaViewerEntryPoint
|
import io.element.android.libraries.mediaviewer.api.MediaViewerEntryPoint
|
||||||
|
|
@ -47,6 +53,8 @@ class MediaViewerNode(
|
||||||
pagerKeysHandler: PagerKeysHandler,
|
pagerKeysHandler: PagerKeysHandler,
|
||||||
private val textFileViewer: TextFileViewer,
|
private val textFileViewer: TextFileViewer,
|
||||||
private val audioFocus: AudioFocus,
|
private val audioFocus: AudioFocus,
|
||||||
|
private val sessionId: SessionId,
|
||||||
|
private val enterpriseService: EnterpriseService,
|
||||||
) : Node(buildContext, plugins = plugins),
|
) : Node(buildContext, plugins = plugins),
|
||||||
MediaViewerNavigator {
|
MediaViewerNavigator {
|
||||||
private val inputs = inputs<MediaViewerEntryPoint.Params>()
|
private val inputs = inputs<MediaViewerEntryPoint.Params>()
|
||||||
|
|
@ -127,7 +135,12 @@ class MediaViewerNode(
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
override fun View(modifier: Modifier) {
|
override fun View(modifier: Modifier) {
|
||||||
ForcedDarkElementTheme {
|
val colors by remember {
|
||||||
|
enterpriseService.semanticColorsFlow(sessionId = sessionId)
|
||||||
|
}.collectAsState(SemanticColorsLightDark.default)
|
||||||
|
ForcedDarkElementTheme(
|
||||||
|
colors = colors,
|
||||||
|
) {
|
||||||
val state = presenter.present()
|
val state = presenter.present()
|
||||||
MediaViewerView(
|
MediaViewerView(
|
||||||
state = state,
|
state = state,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue