Skip to content
Closed
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
5 changes: 5 additions & 0 deletions app/app/src/debug/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,10 @@
<!-- android:exported="true"-->
<!-- android:permission="@null"-->
<!-- tools:replace="android:permission" />-->

<activity
android:name="com.hedvig.android.app.debug.MockPurchaseSummaryActivity"
android:exported="true"
android:label="Mock Purchase Summary" />
</application>
</manifest>
Original file line number Diff line number Diff line change
@@ -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"
}
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -9,6 +10,7 @@ internal data class SessionAndIntent(

internal data class ApartmentOffers(
val productDisplayName: String,
val contractGroup: ContractGroup,
val offers: List<ApartmentTierOffer>,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -78,6 +79,7 @@ internal class SubmitFormAndGetOffersUseCaseImpl(

ApartmentOffers(
productDisplayName = offers.first().variant.displayName,
contractGroup = offers.first().variant.typeOfContract.toContractGroup(),
offers = offers.map { it.toTierOffer() },
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ fun NavGraphBuilder.apartmentPurchaseNavGraph(
)
},
productDisplayName = offers.productDisplayName,
contractGroup = offers.contractGroup,
),
),
)
Expand Down
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -11,6 +12,7 @@ internal data class SessionAndIntent(

internal data class CarOffers(
val productDisplayName: String,
val contractGroup: ContractGroup,
val offers: List<CarTierOffer>,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -84,6 +85,7 @@ internal class SubmitCarFormAndGetOffersUseCaseImpl(

CarOffers(
productDisplayName = offers.first().variant.displayName,
contractGroup = offers.first().variant.typeOfContract.toContractGroup(),
offers = offers.map { it.toTierOffer() },
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ fun NavGraphBuilder.carPurchaseNavGraph(
)
},
productDisplayName = offers.productDisplayName,
contractGroup = offers.contractGroup,
),
),
)
Expand Down
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -11,6 +12,7 @@ internal data class SessionAndIntent(

internal data class HouseOffers(
val productDisplayName: String,
val contractGroup: ContractGroup,
val offers: List<HouseTierOffer>,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -97,6 +98,7 @@ internal class SubmitVacationHomeFormAndGetOffersUseCaseImpl(

HouseOffers(
productDisplayName = offers.first().variant.displayName,
contractGroup = offers.first().variant.typeOfContract.toContractGroup(),
offers = offers.map { it.toHouseTierOffer() },
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ fun NavGraphBuilder.housePurchaseNavGraph(
)
},
productDisplayName = offers.productDisplayName,
contractGroup = offers.contractGroup,
),
),
)
Expand Down
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -20,6 +21,7 @@ internal data class Breed(

internal data class PetOffers(
val productDisplayName: String,
val contractGroup: ContractGroup,
val offers: List<PetTierOffer>,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -90,6 +91,7 @@ internal class SubmitPetFormAndGetOffersUseCaseImpl(

PetOffers(
productDisplayName = offers.first().variant.displayName,
contractGroup = offers.first().variant.typeOfContract.toContractGroup(),
offers = offers.map { it.toTierOffer() },
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ fun NavGraphBuilder.petPurchaseNavGraph(
)
},
productDisplayName = offers.productDisplayName,
contractGroup = offers.contractGroup,
),
),
)
Expand Down
1 change: 1 addition & 0 deletions app/purchase-common/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ android {

dependencies {
api(libs.androidx.navigation.common)
api(projects.dataContract)

implementation(libs.androidx.navigation.compose)
implementation(libs.apollo.normalizedCache)
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -63,13 +64,15 @@ data class SelectTierParameters(
val shopSessionId: String,
val offers: List<TierOfferData>,
val productDisplayName: String,
val contractGroup: ContractGroup,
)

@Serializable
data class SummaryParameters(
val shopSessionId: String,
val selectedOffer: TierOfferData,
val productDisplayName: String,
val contractGroup: ContractGroup,
)

@Serializable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ class SelectTierPresenter(
shopSessionId = params.shopSessionId,
selectedOffer = selectedOffer,
productDisplayName = params.productDisplayName,
contractGroup = params.contractGroup,
)
}

Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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(
Expand Down Expand Up @@ -60,15 +67,27 @@ fun PurchaseSummaryDestination(
}

@Composable
private fun PurchaseSummaryScreen(
fun PurchaseSummaryScreen(
params: SummaryParameters,
isSubmitting: Boolean,
navigateUp: () -> Unit,
onConfirm: () -> Unit,
) {
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,
Expand Down Expand Up @@ -176,6 +195,7 @@ private fun PreviewPurchaseSummary() {
hasDiscount = true,
),
productDisplayName = "Hemf\u00f6rs\u00e4kring Hyresr\u00e4tt",
contractGroup = ContractGroup.RENTAL,
),
isSubmitting = false,
navigateUp = {},
Expand Down
Loading