Skip to content
Open
Show file tree
Hide file tree
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 @@ -4817,6 +4817,14 @@ type RecommendedAddonCrossSell {
deepLink: String!
pillowImageSmall: StoryblokImageAsset!
pillowImageLarge: StoryblokImageAsset!
"""
Optional banner text shown above the card; clients fall back to a default when null
"""
banner: String
"""
Benefit rows shown as a checkmark list; empty when none
"""
benefits: [String!]!
}
type RecommendedCrossSell {
crossSell: CrossSell!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ query BottomSheetCrossSells($input: CrossSellInput!) {
description
buttonTitle
deepLink
banner
benefits
pillowImageLarge {
src
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,8 @@ internal class GetCrossSellSheetDataUseCaseImpl(
buttonTitle = it.buttonTitle,
description = it.description,
deepLink = it.deepLink,
banner = it.banner,
benefits = it.benefits,
pillowImageSmall = it.pillowImageSmall.src,
pillowImageLarge = it.pillowImageLarge.src,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ internal class CrossSellSheetPresenterTest {
buttonTitle = "See offer",
description = "For a safer trip abroad",
deepLink = "https://hedvig.com/addon",
banner = "Add extra safety when traveling",
benefits = listOf("Travel up to 60 days in a row"),
pillowImageSmall = "smallSrc",
pillowImageLarge = "largeSrc",
)
Expand Down
2 changes: 2 additions & 0 deletions app/feature/feature-home/src/main/graphql/QueryHome.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ query Home($claimsHistoryFlag: Boolean!) {
description
buttonTitle
deepLink
banner
benefits
pillowImageLarge {
src
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,8 @@ internal class GetHomeDataUseCaseImpl(
buttonTitle = it.buttonTitle,
description = it.description,
deepLink = it.deepLink,
banner = it.banner,
benefits = it.benefits,
pillowImageSmall = it.pillowImageSmall.src,
pillowImageLarge = it.pillowImageLarge.src,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -689,6 +689,8 @@ internal class GetHomeUseCaseTest {
description = "For a safer trip abroad"
buttonTitle = "See offer"
deepLink = "https://hedvig.com/addon"
banner = "Add extra safety when traveling"
benefits = listOf("Travel up to 60 days in a row", "Delayed bags and flights covered")
pillowImageSmall = buildStoryblokImageAsset { src = "smallSrc" }
pillowImageLarge = buildStoryblokImageAsset { src = "largeSrc" }
}
Expand Down Expand Up @@ -719,6 +721,8 @@ internal class GetHomeUseCaseTest {
buttonTitle = "See offer",
description = "For a safer trip abroad",
deepLink = "https://hedvig.com/addon",
banner = "Add extra safety when traveling",
benefits = listOf("Travel up to 60 days in a row", "Delayed bags and flights covered"),
pillowImageSmall = "smallSrc",
pillowImageLarge = "largeSrc",
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ internal class HomePresenterTest {
buttonTitle = "See offer",
description = "For a safer trip abroad",
deepLink = "https://hedvig.com/addon",
banner = "Add extra safety when traveling",
benefits = listOf("Travel up to 60 days in a row"),
pillowImageSmall = "smallSrc",
pillowImageLarge = "largeSrc",
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ import com.hedvig.android.design.system.hedvig.Surface
import com.hedvig.android.design.system.hedvig.api.HedvigBottomSheetState
import com.hedvig.android.design.system.hedvig.hedvigDropShadow
import com.hedvig.android.design.system.hedvig.icon.Campaign
import com.hedvig.android.design.system.hedvig.icon.Checkmark
import com.hedvig.android.design.system.hedvig.icon.HedvigIcons
import com.hedvig.android.design.system.hedvig.icon.Plus
import com.hedvig.android.design.system.hedvig.placeholder.crossSellPainterFallback
Expand Down Expand Up @@ -102,6 +103,8 @@ data class RecommendedAddon(
val buttonTitle: String,
val description: String,
val deepLink: String,
val banner: String?,
val benefits: List<String>,
val pillowImageSmall: String,
val pillowImageLarge: String,
)
Expand Down Expand Up @@ -136,7 +139,7 @@ fun CrossSellFloatingBottomSheet(
dragHandle = {
CrossSellDragHandle(
text = state.data?.recommendedCrossSell?.bannerText
?: state.data?.recommendedAddon?.let { stringResource(Res.string.CROSS_SELL_BANNER_TEXT) },
?: state.data?.recommendedAddon?.let { it.banner ?: stringResource(Res.string.CROSS_SELL_BANNER_TEXT) },
modifier = Modifier
.padding(horizontal = 16.dp)
.clip(HedvigTheme.shapes.cornerXLargeTop),
Expand Down Expand Up @@ -174,6 +177,7 @@ fun CrossSellBottomSheet(
CrossSellDragHandle(
contentPadding = PaddingValues(horizontal = 16.dp),
text = state.data?.recommendedCrossSell?.bannerText
?: state.data?.recommendedAddon?.banner
?: stringResource(Res.string.CROSS_SELL_BANNER_TEXT),
)
}
Expand Down Expand Up @@ -405,7 +409,28 @@ private fun AddonRecommendationSection(
modifier = Modifier.padding(horizontal = 16.dp),
textAlign = TextAlign.Center,
)
Spacer(Modifier.height(48.dp))
if (recommendedAddon.benefits.isNotEmpty()) {
Spacer(Modifier.height(32.dp))
Column(
verticalArrangement = Arrangement.spacedBy(10.dp),
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 24.dp),
) {
for (benefit in recommendedAddon.benefits) {
Row(verticalAlignment = Alignment.Top) {
Icon(
imageVector = HedvigIcons.Checkmark,
contentDescription = EmptyContentDescription,
modifier = Modifier.size(24.dp),
)
Spacer(Modifier.width(12.dp))
HedvigText(benefit)
}
}
}
}
Spacer(Modifier.height(if (recommendedAddon.benefits.isEmpty()) 48.dp else 32.dp))
HedvigButton(
text = recommendedAddon.buttonTitle,
onClick = {
Expand Down Expand Up @@ -1059,6 +1084,12 @@ private fun PreviewRecommendedAddon(
buttonTitle = "Check the addon",
description = "Best addon in the world",
deepLink = "deep",
banner = "Add extra safety when traveling",
benefits = listOf(
"Travel up to 60 days in a row",
"Delayed bags and flights covered",
"Applies to your whole household",
),
pillowImageSmall = "src",
pillowImageLarge = "src",
),
Expand Down
Loading