diff --git a/app/app/src/debug/AndroidManifest.xml b/app/app/src/debug/AndroidManifest.xml
index a9ce73e25f..ff3fe6d910 100644
--- a/app/app/src/debug/AndroidManifest.xml
+++ b/app/app/src/debug/AndroidManifest.xml
@@ -21,5 +21,10 @@
+
+
\ No newline at end of file
diff --git a/app/app/src/debug/kotlin/com/hedvig/android/app/debug/MockPurchaseSummaryActivity.kt b/app/app/src/debug/kotlin/com/hedvig/android/app/debug/MockPurchaseSummaryActivity.kt
new file mode 100644
index 0000000000..6736f9f0c6
--- /dev/null
+++ b/app/app/src/debug/kotlin/com/hedvig/android/app/debug/MockPurchaseSummaryActivity.kt
@@ -0,0 +1,66 @@
+package com.hedvig.android.app.debug
+
+import android.os.Bundle
+import androidx.activity.ComponentActivity
+import androidx.activity.compose.setContent
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
+import com.hedvig.android.data.contract.ContractGroup
+import com.hedvig.android.design.system.hedvig.HedvigTheme
+import com.hedvig.android.design.system.hedvig.Surface
+import com.hedvig.android.feature.purchase.common.navigation.SummaryParameters
+import com.hedvig.android.feature.purchase.common.navigation.TierOfferData
+import com.hedvig.android.feature.purchase.common.ui.summary.PurchaseSummaryScreen
+
+class MockPurchaseSummaryActivity : ComponentActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContent {
+ var groupIndex by remember { mutableStateOf(0) }
+ val group = ContractGroup.entries[groupIndex % ContractGroup.entries.size]
+ HedvigTheme {
+ Surface(color = HedvigTheme.colorScheme.backgroundPrimary) {
+ PurchaseSummaryScreen(
+ params = SummaryParameters(
+ shopSessionId = "mock-session",
+ selectedOffer = TierOfferData(
+ offerId = "mock-1",
+ tierDisplayName = "Hem Standard",
+ tierDescription = "Vår mest populära försäkring",
+ grossAmount = 139.0,
+ grossCurrencyCode = "SEK",
+ netAmount = 118.0,
+ netCurrencyCode = "SEK",
+ usps = emptyList(),
+ exposureDisplayName = "Storgatan 1",
+ deductibleDisplayName = "1 500 kr",
+ hasDiscount = true,
+ ),
+ productDisplayName = mockProductName(group),
+ contractGroup = group,
+ ),
+ isSubmitting = false,
+ navigateUp = { finish() },
+ onConfirm = { groupIndex++ },
+ )
+ }
+ }
+ }
+ }
+}
+
+private fun mockProductName(group: ContractGroup): String = when (group) {
+ ContractGroup.HOMEOWNER -> "Hemförsäkring Bostadsrätt"
+ ContractGroup.RENTAL -> "Hemförsäkring Hyresrätt"
+ ContractGroup.HOUSE -> "Villaförsäkring"
+ ContractGroup.STUDENT -> "Studentförsäkring"
+ ContractGroup.ACCIDENT -> "Olycksfallsförsäkring"
+ ContractGroup.CAR -> "Bilförsäkring"
+ ContractGroup.CAT -> "Kattförsäkring"
+ ContractGroup.DOG -> "Hundförsäkring"
+ ContractGroup.TRAVEL -> "Reseförsäkring"
+ ContractGroup.COUNTRY_HOME -> "Fritidshusförsäkring"
+ ContractGroup.UNKNOWN -> "Försäkring"
+}
diff --git a/app/feature/feature-purchase-apartment/src/main/kotlin/com/hedvig/android/feature/purchase/apartment/data/PurchaseApartmentModels.kt b/app/feature/feature-purchase-apartment/src/main/kotlin/com/hedvig/android/feature/purchase/apartment/data/PurchaseApartmentModels.kt
index 8866ad42db..e05953d4c4 100644
--- a/app/feature/feature-purchase-apartment/src/main/kotlin/com/hedvig/android/feature/purchase/apartment/data/PurchaseApartmentModels.kt
+++ b/app/feature/feature-purchase-apartment/src/main/kotlin/com/hedvig/android/feature/purchase/apartment/data/PurchaseApartmentModels.kt
@@ -1,6 +1,7 @@
package com.hedvig.android.feature.purchase.apartment.data
import com.hedvig.android.core.uidata.UiMoney
+import com.hedvig.android.data.contract.ContractGroup
internal data class SessionAndIntent(
val shopSessionId: String,
@@ -9,6 +10,7 @@ internal data class SessionAndIntent(
internal data class ApartmentOffers(
val productDisplayName: String,
+ val contractGroup: ContractGroup,
val offers: List,
)
diff --git a/app/feature/feature-purchase-apartment/src/main/kotlin/com/hedvig/android/feature/purchase/apartment/data/SubmitFormAndGetOffersUseCase.kt b/app/feature/feature-purchase-apartment/src/main/kotlin/com/hedvig/android/feature/purchase/apartment/data/SubmitFormAndGetOffersUseCase.kt
index 19d2d7c4fb..128d5c5bdf 100644
--- a/app/feature/feature-purchase-apartment/src/main/kotlin/com/hedvig/android/feature/purchase/apartment/data/SubmitFormAndGetOffersUseCase.kt
+++ b/app/feature/feature-purchase-apartment/src/main/kotlin/com/hedvig/android/feature/purchase/apartment/data/SubmitFormAndGetOffersUseCase.kt
@@ -6,6 +6,7 @@ import com.apollographql.apollo.ApolloClient
import com.hedvig.android.apollo.safeExecute
import com.hedvig.android.core.common.ErrorMessage
import com.hedvig.android.core.uidata.UiMoney
+import com.hedvig.android.data.contract.toContractGroup
import com.hedvig.android.logger.LogPriority
import com.hedvig.android.logger.logcat
import octopus.ApartmentPriceIntentConfirmMutation
@@ -78,6 +79,7 @@ internal class SubmitFormAndGetOffersUseCaseImpl(
ApartmentOffers(
productDisplayName = offers.first().variant.displayName,
+ contractGroup = offers.first().variant.typeOfContract.toContractGroup(),
offers = offers.map { it.toTierOffer() },
)
}
diff --git a/app/feature/feature-purchase-apartment/src/main/kotlin/com/hedvig/android/feature/purchase/apartment/navigation/ApartmentPurchaseNavGraph.kt b/app/feature/feature-purchase-apartment/src/main/kotlin/com/hedvig/android/feature/purchase/apartment/navigation/ApartmentPurchaseNavGraph.kt
index 624c61c73c..2349bea605 100644
--- a/app/feature/feature-purchase-apartment/src/main/kotlin/com/hedvig/android/feature/purchase/apartment/navigation/ApartmentPurchaseNavGraph.kt
+++ b/app/feature/feature-purchase-apartment/src/main/kotlin/com/hedvig/android/feature/purchase/apartment/navigation/ApartmentPurchaseNavGraph.kt
@@ -72,6 +72,7 @@ fun NavGraphBuilder.apartmentPurchaseNavGraph(
)
},
productDisplayName = offers.productDisplayName,
+ contractGroup = offers.contractGroup,
),
),
)
diff --git a/app/feature/feature-purchase-car/src/main/kotlin/com/hedvig/android/feature/purchase/car/data/CarPurchaseModels.kt b/app/feature/feature-purchase-car/src/main/kotlin/com/hedvig/android/feature/purchase/car/data/CarPurchaseModels.kt
index 617b5b8a61..4966de8a29 100644
--- a/app/feature/feature-purchase-car/src/main/kotlin/com/hedvig/android/feature/purchase/car/data/CarPurchaseModels.kt
+++ b/app/feature/feature-purchase-car/src/main/kotlin/com/hedvig/android/feature/purchase/car/data/CarPurchaseModels.kt
@@ -1,6 +1,7 @@
package com.hedvig.android.feature.purchase.car.data
import com.hedvig.android.core.uidata.UiMoney
+import com.hedvig.android.data.contract.ContractGroup
internal data class SessionAndIntent(
val shopSessionId: String,
@@ -11,6 +12,7 @@ internal data class SessionAndIntent(
internal data class CarOffers(
val productDisplayName: String,
+ val contractGroup: ContractGroup,
val offers: List,
)
diff --git a/app/feature/feature-purchase-car/src/main/kotlin/com/hedvig/android/feature/purchase/car/data/SubmitCarFormAndGetOffersUseCase.kt b/app/feature/feature-purchase-car/src/main/kotlin/com/hedvig/android/feature/purchase/car/data/SubmitCarFormAndGetOffersUseCase.kt
index de41566ae1..c2cfb57059 100644
--- a/app/feature/feature-purchase-car/src/main/kotlin/com/hedvig/android/feature/purchase/car/data/SubmitCarFormAndGetOffersUseCase.kt
+++ b/app/feature/feature-purchase-car/src/main/kotlin/com/hedvig/android/feature/purchase/car/data/SubmitCarFormAndGetOffersUseCase.kt
@@ -6,6 +6,7 @@ import com.apollographql.apollo.ApolloClient
import com.hedvig.android.apollo.safeExecute
import com.hedvig.android.core.common.ErrorMessage
import com.hedvig.android.core.uidata.UiMoney
+import com.hedvig.android.data.contract.toContractGroup
import com.hedvig.android.logger.LogPriority
import com.hedvig.android.logger.logcat
import octopus.CarPriceIntentConfirmMutation
@@ -84,6 +85,7 @@ internal class SubmitCarFormAndGetOffersUseCaseImpl(
CarOffers(
productDisplayName = offers.first().variant.displayName,
+ contractGroup = offers.first().variant.typeOfContract.toContractGroup(),
offers = offers.map { it.toTierOffer() },
)
}
diff --git a/app/feature/feature-purchase-car/src/main/kotlin/com/hedvig/android/feature/purchase/car/navigation/CarPurchaseNavGraph.kt b/app/feature/feature-purchase-car/src/main/kotlin/com/hedvig/android/feature/purchase/car/navigation/CarPurchaseNavGraph.kt
index 0b377d9656..7bb0a4e206 100644
--- a/app/feature/feature-purchase-car/src/main/kotlin/com/hedvig/android/feature/purchase/car/navigation/CarPurchaseNavGraph.kt
+++ b/app/feature/feature-purchase-car/src/main/kotlin/com/hedvig/android/feature/purchase/car/navigation/CarPurchaseNavGraph.kt
@@ -71,6 +71,7 @@ fun NavGraphBuilder.carPurchaseNavGraph(
)
},
productDisplayName = offers.productDisplayName,
+ contractGroup = offers.contractGroup,
),
),
)
diff --git a/app/feature/feature-purchase-house/src/main/kotlin/com/hedvig/android/feature/purchase/house/data/HousePurchaseModels.kt b/app/feature/feature-purchase-house/src/main/kotlin/com/hedvig/android/feature/purchase/house/data/HousePurchaseModels.kt
index 9d7f976648..e887200fe6 100644
--- a/app/feature/feature-purchase-house/src/main/kotlin/com/hedvig/android/feature/purchase/house/data/HousePurchaseModels.kt
+++ b/app/feature/feature-purchase-house/src/main/kotlin/com/hedvig/android/feature/purchase/house/data/HousePurchaseModels.kt
@@ -1,6 +1,7 @@
package com.hedvig.android.feature.purchase.house.data
import com.hedvig.android.core.uidata.UiMoney
+import com.hedvig.android.data.contract.ContractGroup
internal data class SessionAndIntent(
val shopSessionId: String,
@@ -11,6 +12,7 @@ internal data class SessionAndIntent(
internal data class HouseOffers(
val productDisplayName: String,
+ val contractGroup: ContractGroup,
val offers: List,
)
diff --git a/app/feature/feature-purchase-house/src/main/kotlin/com/hedvig/android/feature/purchase/house/data/SubmitVacationHomeFormAndGetOffersUseCase.kt b/app/feature/feature-purchase-house/src/main/kotlin/com/hedvig/android/feature/purchase/house/data/SubmitVacationHomeFormAndGetOffersUseCase.kt
index b025d56fd1..10f6b6c215 100644
--- a/app/feature/feature-purchase-house/src/main/kotlin/com/hedvig/android/feature/purchase/house/data/SubmitVacationHomeFormAndGetOffersUseCase.kt
+++ b/app/feature/feature-purchase-house/src/main/kotlin/com/hedvig/android/feature/purchase/house/data/SubmitVacationHomeFormAndGetOffersUseCase.kt
@@ -6,6 +6,7 @@ import com.apollographql.apollo.ApolloClient
import com.hedvig.android.apollo.safeExecute
import com.hedvig.android.core.common.ErrorMessage
import com.hedvig.android.core.uidata.UiMoney
+import com.hedvig.android.data.contract.toContractGroup
import com.hedvig.android.logger.LogPriority
import com.hedvig.android.logger.logcat
import octopus.HousePriceIntentConfirmMutation
@@ -97,6 +98,7 @@ internal class SubmitVacationHomeFormAndGetOffersUseCaseImpl(
HouseOffers(
productDisplayName = offers.first().variant.displayName,
+ contractGroup = offers.first().variant.typeOfContract.toContractGroup(),
offers = offers.map { it.toHouseTierOffer() },
)
}
diff --git a/app/feature/feature-purchase-house/src/main/kotlin/com/hedvig/android/feature/purchase/house/navigation/HousePurchaseNavGraph.kt b/app/feature/feature-purchase-house/src/main/kotlin/com/hedvig/android/feature/purchase/house/navigation/HousePurchaseNavGraph.kt
index b2d6710ae5..318be68141 100644
--- a/app/feature/feature-purchase-house/src/main/kotlin/com/hedvig/android/feature/purchase/house/navigation/HousePurchaseNavGraph.kt
+++ b/app/feature/feature-purchase-house/src/main/kotlin/com/hedvig/android/feature/purchase/house/navigation/HousePurchaseNavGraph.kt
@@ -68,6 +68,7 @@ fun NavGraphBuilder.housePurchaseNavGraph(
)
},
productDisplayName = offers.productDisplayName,
+ contractGroup = offers.contractGroup,
),
),
)
diff --git a/app/feature/feature-purchase-pet/src/main/kotlin/com/hedvig/android/feature/purchase/pet/data/PetPurchaseModels.kt b/app/feature/feature-purchase-pet/src/main/kotlin/com/hedvig/android/feature/purchase/pet/data/PetPurchaseModels.kt
index 35d8328d77..5b7ea7ff8e 100644
--- a/app/feature/feature-purchase-pet/src/main/kotlin/com/hedvig/android/feature/purchase/pet/data/PetPurchaseModels.kt
+++ b/app/feature/feature-purchase-pet/src/main/kotlin/com/hedvig/android/feature/purchase/pet/data/PetPurchaseModels.kt
@@ -1,6 +1,7 @@
package com.hedvig.android.feature.purchase.pet.data
import com.hedvig.android.core.uidata.UiMoney
+import com.hedvig.android.data.contract.ContractGroup
internal const val PRODUCT_NAME_DOG = "SE_PET_DOG"
internal const val PRODUCT_NAME_CAT = "SE_PET_CAT"
@@ -20,6 +21,7 @@ internal data class Breed(
internal data class PetOffers(
val productDisplayName: String,
+ val contractGroup: ContractGroup,
val offers: List,
)
diff --git a/app/feature/feature-purchase-pet/src/main/kotlin/com/hedvig/android/feature/purchase/pet/data/SubmitPetFormAndGetOffersUseCase.kt b/app/feature/feature-purchase-pet/src/main/kotlin/com/hedvig/android/feature/purchase/pet/data/SubmitPetFormAndGetOffersUseCase.kt
index 57db98f059..4d8aa93783 100644
--- a/app/feature/feature-purchase-pet/src/main/kotlin/com/hedvig/android/feature/purchase/pet/data/SubmitPetFormAndGetOffersUseCase.kt
+++ b/app/feature/feature-purchase-pet/src/main/kotlin/com/hedvig/android/feature/purchase/pet/data/SubmitPetFormAndGetOffersUseCase.kt
@@ -6,6 +6,7 @@ import com.apollographql.apollo.ApolloClient
import com.hedvig.android.apollo.safeExecute
import com.hedvig.android.core.common.ErrorMessage
import com.hedvig.android.core.uidata.UiMoney
+import com.hedvig.android.data.contract.toContractGroup
import com.hedvig.android.logger.LogPriority
import com.hedvig.android.logger.logcat
import kotlinx.datetime.LocalDate
@@ -90,6 +91,7 @@ internal class SubmitPetFormAndGetOffersUseCaseImpl(
PetOffers(
productDisplayName = offers.first().variant.displayName,
+ contractGroup = offers.first().variant.typeOfContract.toContractGroup(),
offers = offers.map { it.toTierOffer() },
)
}
diff --git a/app/feature/feature-purchase-pet/src/main/kotlin/com/hedvig/android/feature/purchase/pet/navigation/PetPurchaseNavGraph.kt b/app/feature/feature-purchase-pet/src/main/kotlin/com/hedvig/android/feature/purchase/pet/navigation/PetPurchaseNavGraph.kt
index d3a4230a86..d5e6750c2b 100644
--- a/app/feature/feature-purchase-pet/src/main/kotlin/com/hedvig/android/feature/purchase/pet/navigation/PetPurchaseNavGraph.kt
+++ b/app/feature/feature-purchase-pet/src/main/kotlin/com/hedvig/android/feature/purchase/pet/navigation/PetPurchaseNavGraph.kt
@@ -77,6 +77,7 @@ fun NavGraphBuilder.petPurchaseNavGraph(
)
},
productDisplayName = offers.productDisplayName,
+ contractGroup = offers.contractGroup,
),
),
)
diff --git a/app/purchase-common/build.gradle.kts b/app/purchase-common/build.gradle.kts
index 9dc73af15f..901ec498b9 100644
--- a/app/purchase-common/build.gradle.kts
+++ b/app/purchase-common/build.gradle.kts
@@ -15,6 +15,7 @@ android {
dependencies {
api(libs.androidx.navigation.common)
+ api(projects.dataContract)
implementation(libs.androidx.navigation.compose)
implementation(libs.apollo.normalizedCache)
diff --git a/app/purchase-common/src/main/kotlin/com/hedvig/android/feature/purchase/common/navigation/PurchaseCommonDestination.kt b/app/purchase-common/src/main/kotlin/com/hedvig/android/feature/purchase/common/navigation/PurchaseCommonDestination.kt
index 4fabf7a60e..0c67e962bd 100644
--- a/app/purchase-common/src/main/kotlin/com/hedvig/android/feature/purchase/common/navigation/PurchaseCommonDestination.kt
+++ b/app/purchase-common/src/main/kotlin/com/hedvig/android/feature/purchase/common/navigation/PurchaseCommonDestination.kt
@@ -1,5 +1,6 @@
package com.hedvig.android.feature.purchase.common.navigation
+import com.hedvig.android.data.contract.ContractGroup
import com.hedvig.android.navigation.common.Destination
import com.hedvig.android.navigation.common.DestinationNavTypeAware
import kotlin.reflect.KType
@@ -63,6 +64,7 @@ data class SelectTierParameters(
val shopSessionId: String,
val offers: List,
val productDisplayName: String,
+ val contractGroup: ContractGroup,
)
@Serializable
@@ -70,6 +72,7 @@ data class SummaryParameters(
val shopSessionId: String,
val selectedOffer: TierOfferData,
val productDisplayName: String,
+ val contractGroup: ContractGroup,
)
@Serializable
diff --git a/app/purchase-common/src/main/kotlin/com/hedvig/android/feature/purchase/common/ui/offer/SelectTierViewModel.kt b/app/purchase-common/src/main/kotlin/com/hedvig/android/feature/purchase/common/ui/offer/SelectTierViewModel.kt
index 6665245968..791f24eff4 100644
--- a/app/purchase-common/src/main/kotlin/com/hedvig/android/feature/purchase/common/ui/offer/SelectTierViewModel.kt
+++ b/app/purchase-common/src/main/kotlin/com/hedvig/android/feature/purchase/common/ui/offer/SelectTierViewModel.kt
@@ -115,6 +115,7 @@ class SelectTierPresenter(
shopSessionId = params.shopSessionId,
selectedOffer = selectedOffer,
productDisplayName = params.productDisplayName,
+ contractGroup = params.contractGroup,
)
}
diff --git a/app/purchase-common/src/main/kotlin/com/hedvig/android/feature/purchase/common/ui/summary/PurchaseSummaryDestination.kt b/app/purchase-common/src/main/kotlin/com/hedvig/android/feature/purchase/common/ui/summary/PurchaseSummaryDestination.kt
index 4235029cfb..c31a146b1a 100644
--- a/app/purchase-common/src/main/kotlin/com/hedvig/android/feature/purchase/common/ui/summary/PurchaseSummaryDestination.kt
+++ b/app/purchase-common/src/main/kotlin/com/hedvig/android/feature/purchase/common/ui/summary/PurchaseSummaryDestination.kt
@@ -1,19 +1,25 @@
package com.hedvig.android.feature.purchase.common.ui.summary
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
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.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
+import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
+import com.hedvig.android.data.contract.ContractGroup
+import com.hedvig.android.data.contract.pillowResource
import com.hedvig.android.design.system.hedvig.ButtonDefaults.ButtonSize.Large
import com.hedvig.android.design.system.hedvig.ButtonDefaults.ButtonStyle.Primary
import com.hedvig.android.design.system.hedvig.ErrorDialog
@@ -28,6 +34,7 @@ import com.hedvig.android.design.system.hedvig.Surface
import com.hedvig.android.feature.purchase.common.navigation.SigningParameters
import com.hedvig.android.feature.purchase.common.navigation.SummaryParameters
import com.hedvig.android.feature.purchase.common.navigation.TierOfferData
+import org.jetbrains.compose.resources.painterResource
@Composable
fun PurchaseSummaryDestination(
@@ -60,7 +67,7 @@ fun PurchaseSummaryDestination(
}
@Composable
-private fun PurchaseSummaryScreen(
+fun PurchaseSummaryScreen(
params: SummaryParameters,
isSubmitting: Boolean,
navigateUp: () -> Unit,
@@ -68,7 +75,19 @@ private fun PurchaseSummaryScreen(
) {
HedvigScaffold(navigateUp) {
val offer = params.selectedOffer
- HedvigCard(modifier = Modifier.fillMaxWidth().padding(16.dp)) {
+ Box(
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(vertical = 24.dp),
+ contentAlignment = Alignment.Center,
+ ) {
+ Image(
+ painter = painterResource(params.contractGroup.pillowResource()),
+ contentDescription = null,
+ modifier = Modifier.size(128.dp),
+ )
+ }
+ HedvigCard(modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp)) {
Column(modifier = Modifier.padding(16.dp)) {
HedvigText(
text = params.productDisplayName,
@@ -176,6 +195,7 @@ private fun PreviewPurchaseSummary() {
hasDiscount = true,
),
productDisplayName = "Hemf\u00f6rs\u00e4kring Hyresr\u00e4tt",
+ contractGroup = ContractGroup.RENTAL,
),
isSubmitting = false,
navigateUp = {},