diff --git a/app/data/data-display-items/src/main/kotlin/com/hedvig/android/data/display/items/DisplayItem.kt b/app/data/data-display-items/src/main/kotlin/com/hedvig/android/data/display/items/DisplayItem.kt index 82a5625b7b..7c1eb89ba1 100644 --- a/app/data/data-display-items/src/main/kotlin/com/hedvig/android/data/display/items/DisplayItem.kt +++ b/app/data/data-display-items/src/main/kotlin/com/hedvig/android/data/display/items/DisplayItem.kt @@ -8,6 +8,7 @@ import kotlinx.datetime.toLocalDateTime data class DisplayItem( val title: String, val value: DisplayItemValue, + val subtitle: String? = null, ) { sealed interface DisplayItemValue { data class DateTime(val localDateTime: LocalDateTime) : DisplayItemValue @@ -18,7 +19,7 @@ data class DisplayItem( } companion object { - fun fromStrings(title: String, value: String): DisplayItem { + fun fromStrings(title: String, value: String, subtitle: String? = null): DisplayItem { val displayItemValue: DisplayItemValue = run { try { val localDate = LocalDate.parse(value) @@ -42,6 +43,7 @@ data class DisplayItem( return DisplayItem( title, displayItemValue, + subtitle, ) } } diff --git a/app/feature/feature-insurances/src/main/graphql/QueryInsuranceContracts.graphql b/app/feature/feature-insurances/src/main/graphql/QueryInsuranceContracts.graphql index ae08554963..334490da45 100644 --- a/app/feature/feature-insurances/src/main/graphql/QueryInsuranceContracts.graphql +++ b/app/feature/feature-insurances/src/main/graphql/QueryInsuranceContracts.graphql @@ -117,6 +117,7 @@ fragment AgreementFragment on Agreement { fragment AgreementDisplayItemFragment on AgreementDisplayItem { displayTitle + displaySubtitle displayValue } diff --git a/app/feature/feature-insurances/src/main/kotlin/com/hedvig/android/feature/insurances/data/GetInsuranceContractsUseCase.kt b/app/feature/feature-insurances/src/main/kotlin/com/hedvig/android/feature/insurances/data/GetInsuranceContractsUseCase.kt index 860063b2a1..4606889566 100644 --- a/app/feature/feature-insurances/src/main/kotlin/com/hedvig/android/feature/insurances/data/GetInsuranceContractsUseCase.kt +++ b/app/feature/feature-insurances/src/main/kotlin/com/hedvig/android/feature/insurances/data/GetInsuranceContractsUseCase.kt @@ -239,7 +239,7 @@ private fun ContractFragment.toContract( } private fun AgreementDisplayItemFragment.toDisplayItem(): DisplayItem { - return DisplayItem.fromStrings(displayTitle, displayValue) + return DisplayItem.fromStrings(displayTitle, displayValue, displaySubtitle) } private fun MonthlyCostFragment.toMonthlyCost(): MonthlyCost { diff --git a/app/feature/feature-insurances/src/main/kotlin/com/hedvig/android/feature/insurances/insurancedetail/yourinfo/YourInfoTab.kt b/app/feature/feature-insurances/src/main/kotlin/com/hedvig/android/feature/insurances/insurancedetail/yourinfo/YourInfoTab.kt index 937adc7a5e..0f70148b11 100644 --- a/app/feature/feature-insurances/src/main/kotlin/com/hedvig/android/feature/insurances/insurancedetail/yourinfo/YourInfoTab.kt +++ b/app/feature/feature-insurances/src/main/kotlin/com/hedvig/android/feature/insurances/insurancedetail/yourinfo/YourInfoTab.kt @@ -309,9 +309,18 @@ internal fun YourInfoTab( modifier = Modifier.padding(horizontal = 16.dp), ) } - if (allowEditCoInsured && coInsured.isNotEmpty()) { - HorizontalDivider(Modifier.padding(horizontal = 16.dp)) + if (allowEditCoInsured || allowEditCoOwners) { + HorizontalDivider(modifier = Modifier.padding(horizontal = 16.dp)) Spacer(Modifier.height(16.dp)) + ContractOwnerSection( + coInsuredList = coInsured, + modifier = Modifier.padding(horizontal = 16.dp), + ) + if (coInsured.isEmpty() && coOwners.isEmpty()) { + Spacer(Modifier.height(16.dp)) + } + } + if (allowEditCoInsured && coInsured.isNotEmpty()) { CoInsuredSection( coInsuredList = coInsured, contractHolderDisplayName = contractHolderDisplayName, @@ -321,8 +330,6 @@ internal fun YourInfoTab( ) } if (allowEditCoOwners && coOwners.isNotEmpty()) { - HorizontalDivider(Modifier.padding(horizontal = 16.dp)) - Spacer(Modifier.height(16.dp)) CoInsuredSection( coInsuredList = coOwners, contractHolderDisplayName = contractHolderDisplayName, @@ -660,11 +667,16 @@ internal fun CoverageRows(coverageRowItems: List, modifier: Modifie coverageRowItems.forEachIndexed { index, displayItem -> HorizontalItemsWithMaximumSpaceTaken( startSlot = { - Row( - verticalAlignment = Alignment.CenterVertically, + Column( + verticalArrangement = Arrangement.Center, modifier = Modifier.padding(vertical = 16.dp), ) { HedvigText(displayItem.title) + displayItem.subtitle?.let { + HedvigText(it, + style = HedvigTheme.typography.label, + color = HedvigTheme.colorScheme.textSecondary) + } } }, endSlot = { @@ -746,6 +758,44 @@ internal fun PriceRow( ) } +@Composable +internal fun ContractOwnerSection( + coInsuredList: List, + modifier: Modifier, +) { + Column(modifier = modifier) { + HorizontalItemsWithMaximumSpaceTaken( + startSlot = { + Column( + verticalArrangement = Arrangement.Center, + modifier = Modifier.padding(vertical = 4.dp), + ) { + HedvigText(stringResource(Res.string.CHANGE_ADDRESS_CO_INSURED_LABEL)) + } + }, + endSlot = { + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.End, + modifier = Modifier.padding(vertical = 4.dp), + ) { + val text = if (coInsuredList.isEmpty()) { + stringResource(Res.string.CHANGE_ADDRESS_ONLY_YOU) + } else { + stringResource(Res.string.CHANGE_ADDRESS_YOU_PLUS, coInsuredList.size) + } + HedvigText( + text = text, + color = HedvigTheme.colorScheme.textSecondary, + textAlign = TextAlign.End, + ) + } + }, + spaceBetween = 8.dp, + ) + } +} + @Composable internal fun CoInsuredSection( coInsuredList: List, @@ -757,35 +807,7 @@ internal fun CoInsuredSection( val dateTimeFormatter = rememberHedvigDateTimeFormatter() val birthDateTimeFormatter = rememberHedvigBirthDateDateTimeFormatter() Column(modifier = modifier) { - HorizontalItemsWithMaximumSpaceTaken( - startSlot = { - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier.padding(vertical = 4.dp), - ) { - HedvigText(stringResource(Res.string.CHANGE_ADDRESS_CO_INSURED_LABEL)) - } - }, - endSlot = { - Row( - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.End, - modifier = Modifier.padding(vertical = 4.dp), - ) { - val text = if (coInsuredList.isEmpty()) { - stringResource(Res.string.CHANGE_ADDRESS_ONLY_YOU) - } else { - stringResource(Res.string.CHANGE_ADDRESS_YOU_PLUS, coInsuredList.size) - } - HedvigText( - text = text, - color = HedvigTheme.colorScheme.textSecondary, - textAlign = TextAlign.End, - ) - } - }, - spaceBetween = 8.dp, - ) + Spacer(Modifier.height(16.dp)) HorizontalDivider() HorizontalItemsWithMaximumSpaceTaken(