Bug 1847024 - Create update analysis card component

fenix/119.0
Cathy Lu 11 months ago committed by mergify[bot]
parent c6d17ce38a
commit 2bc4b7a564

@ -18,6 +18,7 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.material.Icon
import androidx.compose.material.Text
@ -59,10 +60,12 @@ import org.mozilla.fenix.theme.FirefoxTheme
* @param modifier The modifier to be applied to the Composable.
*/
@Composable
@Suppress("LongParameterList")
fun ProductAnalysis(
productRecommendationsEnabled: Boolean,
productAnalysis: AnalysisPresent,
onOptOutClick: () -> Unit,
onReanalyzeClick: () -> Unit,
onProductRecommendationsEnabledStateChange: (Boolean) -> Unit,
onReviewGradeLearnMoreClick: (String) -> Unit,
modifier: Modifier = Modifier,
@ -71,6 +74,12 @@ fun ProductAnalysis(
modifier = modifier,
verticalArrangement = Arrangement.spacedBy(16.dp),
) {
if (productAnalysis.needsAnalysis) {
ReanalyzeCard(
onReanalyzeClick = onReanalyzeClick,
)
}
if (productAnalysis.reviewGrade != null) {
ReviewGradeCard(
reviewGrade = productAnalysis.reviewGrade,
@ -111,6 +120,27 @@ fun ProductAnalysis(
}
}
@Composable
private fun ReanalyzeCard(
onReanalyzeClick: () -> Unit,
) {
ReviewQualityCheckInfoCard(
title = stringResource(R.string.review_quality_check_outdated_analysis_warning_title),
type = ReviewQualityCheckInfoType.AnalysisUpdate,
modifier = Modifier.fillMaxWidth(),
buttonText = stringResource(R.string.review_quality_check_outdated_analysis_warning_action),
onButtonClick = onReanalyzeClick,
icon = {
Icon(
painter = painterResource(id = R.drawable.mozac_ic_information_fill_24),
contentDescription = null,
modifier = Modifier.size(24.dp),
tint = FirefoxTheme.colors.iconPrimary,
)
},
)
}
@Composable
private fun ReviewGradeCard(
reviewGrade: ReviewQualityCheckState.Grade,
@ -504,6 +534,7 @@ private fun ProductAnalysisPreview() {
),
),
onOptOutClick = {},
onReanalyzeClick = {},
onProductRecommendationsEnabledStateChange = {
productRecommendationsEnabled.value = it
},
@ -530,3 +561,20 @@ private fun ReviewQualityInfoPreview() {
}
}
}
@Composable
@LightDarkPreview
private fun ReanalyzeCardPreview() {
FirefoxTheme {
Box(
modifier = Modifier
.fillMaxWidth()
.background(color = FirefoxTheme.colors.layer1)
.padding(all = 16.dp),
) {
ReanalyzeCard(
onReanalyzeClick = {},
)
}
}
}

@ -55,6 +55,7 @@ fun ReviewQualityCheckBottomSheet(
onRequestDismiss()
store.dispatch(ReviewQualityCheckAction.OptOut)
},
onReanalyzeClick = {},
onProductRecommendationsEnabledStateChange = {
store.dispatch(ReviewQualityCheckAction.ToggleProductRecommendation)
},
@ -83,6 +84,7 @@ fun ReviewQualityCheckBottomSheet(
private fun ProductReview(
state: ReviewQualityCheckState.OptedIn,
onOptOutClick: () -> Unit,
onReanalyzeClick: () -> Unit,
onProductRecommendationsEnabledStateChange: (Boolean) -> Unit,
onReviewGradeLearnMoreClick: (String) -> Unit,
) {
@ -96,6 +98,7 @@ private fun ProductReview(
productRecommendationsEnabled = state.productRecommendationsPreference,
productAnalysis = productReviewState,
onOptOutClick = onOptOutClick,
onReanalyzeClick = onReanalyzeClick,
onProductRecommendationsEnabledStateChange = onProductRecommendationsEnabledStateChange,
onReviewGradeLearnMoreClick = onReviewGradeLearnMoreClick,
)

@ -137,6 +137,7 @@ enum class ReviewQualityCheckInfoType {
Confirmation,
Error,
Info,
AnalysisUpdate,
;
val cardBackgroundColor: Color
@ -146,6 +147,7 @@ enum class ReviewQualityCheckInfoType {
Confirmation -> FirefoxTheme.colors.layerConfirmation
Error -> FirefoxTheme.colors.layerError
Info -> FirefoxTheme.colors.layerInfo
AnalysisUpdate -> Color.Transparent
}
val buttonBackgroundColor: Color
@ -155,12 +157,14 @@ enum class ReviewQualityCheckInfoType {
Confirmation -> FirefoxTheme.colors.actionConfirmation
Error -> FirefoxTheme.colors.actionError
Info -> FirefoxTheme.colors.actionInfo
AnalysisUpdate -> FirefoxTheme.colors.actionSecondary
}
val buttonTextColor: Color
@Composable
get() = when {
this == Info && !isSystemInDarkTheme() -> FirefoxTheme.colors.textOnColorPrimary
this == AnalysisUpdate -> FirefoxTheme.colors.textActionSecondary
else -> FirefoxTheme.colors.textPrimary
}
}
@ -177,6 +181,7 @@ private class PreviewModelParameterProvider : PreviewParameterProvider<PreviewMo
PreviewModel(ReviewQualityCheckInfoType.Confirmation, R.drawable.mozac_ic_checkmark_24),
PreviewModel(ReviewQualityCheckInfoType.Error, R.drawable.mozac_ic_information_fill_24),
PreviewModel(ReviewQualityCheckInfoType.Info, R.drawable.mozac_ic_information_fill_24),
PreviewModel(ReviewQualityCheckInfoType.AnalysisUpdate, R.drawable.mozac_ic_information_fill_24),
)
}

Loading…
Cancel
Save