Skip to content
This repository has been archived by the owner on Feb 20, 2023. It is now read-only.

For #27468 - Backplate homepage MessageCard #27677

Merged
merged 2 commits into from
Nov 3, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,24 @@
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding

import android.view.View
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.ComposeView
import androidx.lifecycle.LifecycleOwner
import mozilla.components.lib.state.ext.observeAsComposableState
import org.mozilla.fenix.R
import org.mozilla.fenix.components.components
import org.mozilla.fenix.compose.ComposeViewHolder
import org.mozilla.fenix.compose.MessageCard
import org.mozilla.fenix.compose.MessageCardColors
import org.mozilla.fenix.gleanplumb.Message
import org.mozilla.fenix.home.sessioncontrol.SessionControlInteractor
import org.mozilla.fenix.theme.FirefoxTheme
import org.mozilla.fenix.wallpapers.Wallpaper
import org.mozilla.fenix.wallpapers.WallpaperState

/**
* View holder for the Nimbus Message Card.
Expand Down Expand Up @@ -47,11 +54,31 @@ class MessageCardViewHolder(
@Composable
override fun Content() {
val message by remember { mutableStateOf(messageGlobal) }
val wallpaperState = components.appStore
.observeAsComposableState { state -> state.wallpaperState }.value ?: WallpaperState.default
val isWallpaperNotDefault = !Wallpaper.nameIsDefault(wallpaperState.currentWallpaper.name)

var (_, _, _, _, buttonColor, buttonTextColor) = MessageCardColors.buildMessageCardColors()

if (isWallpaperNotDefault) {
buttonColor = FirefoxTheme.colors.layer1

if (!isSystemInDarkTheme()) {
buttonTextColor = FirefoxTheme.colors.textActionSecondary
}
}

val messageCardColors = MessageCardColors.buildMessageCardColors(
backgroundColor = wallpaperState.wallpaperCardColor,
buttonColor = buttonColor,
buttonTextColor = buttonTextColor,
)

MessageCard(
messageText = message.data.text,
titleText = message.data.title,
buttonText = message.data.buttonLabel,
messageColors = messageCardColors,
onClick = { interactor.onMessageClicked(message) },
onCloseButtonClick = { interactor.onMessageClosedClicked(message) },
)
Expand Down