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 = {},