Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not merge, to aid with review #2244

Draft
wants to merge 49 commits into
base: stylianos/old
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
8f25ec4
add new module
panasetskaya Sep 18, 2024
f6d8e5c
SelectTierScreen
panasetskaya Sep 20, 2024
43879e7
CustomizationCard
panasetskaya Sep 23, 2024
0669e93
add string keys
panasetskaya Sep 23, 2024
4557d7e
dialogs content
panasetskaya Sep 23, 2024
86edd92
dialog width etc, bottomSheet (inset?)
panasetskaya Sep 24, 2024
adc5a6d
empty presenter
panasetskaya Sep 24, 2024
5066b42
tier pill in insurance, insurance card in DS, new colors for Highligh…
panasetskaya Sep 25, 2024
7f86e43
tierName in ProductVariant
panasetskaya Sep 25, 2024
e8fcc74
add Frosted color
panasetskaya Sep 26, 2024
d091aa2
change subtitle color
panasetskaya Sep 26, 2024
de26632
Merge branch 'refs/heads/feature/show-tier-insurance' into feature/ti…
panasetskaya Sep 26, 2024
cf2d688
ui change - no bottomSheet
panasetskaya Sep 26, 2024
2746db6
presenter - WIP
panasetskaya Sep 28, 2024
368824f
presenter - WIP
panasetskaya Sep 30, 2024
a0448e5
add preview data
panasetskaya Oct 1, 2024
becff39
separate data-changetier module
panasetskaya Oct 1, 2024
8e867b4
separate data-changetier module
panasetskaya Oct 1, 2024
ede958b
change imports
panasetskaya Oct 1, 2024
ab67f5b
CreateChangeTierDeductibleIntentUseCaseImpl
panasetskaya Oct 1, 2024
5a094cf
change SelectTierDestination and viewModel accordingly, NB: todos!
panasetskaya Oct 1, 2024
942a3d1
database, changeTierRepository, navigation, termination entry point
panasetskaya Oct 2, 2024
33c44fa
custom navType
panasetskaya Oct 2, 2024
3882fc7
move changeTierDao to the AppDatabase
panasetskaya Oct 2, 2024
46ca2b4
add mock data
panasetskaya Oct 2, 2024
a3e1053
currentContractQuery; ui-choice working!
panasetskaya Oct 3, 2024
697425e
tear down mock entry-point
panasetskaya Oct 3, 2024
0db6e08
Merge pull request #2240 from HedvigInsurance/feature/tier-selfservic…
panasetskaya Oct 3, 2024
3660a76
fix current tierNameLong
panasetskaya Oct 3, 2024
bb1086a
fix null titles
panasetskaya Oct 3, 2024
9eb227b
comparison - basics
panasetskaya Oct 3, 2024
da8700e
popUp backStack from termination
panasetskaya Oct 3, 2024
814b77f
ktlint
panasetskaya Oct 3, 2024
52c8c85
disable test for test session
panasetskaya Oct 3, 2024
4e6696a
Merge pull request #2241 from HedvigInsurance/feature/tier-selfservic…
panasetskaya Oct 3, 2024
7fe2776
Revert "TIER FLOW TEST SESSION - to revert!"
panasetskaya Oct 3, 2024
d35751e
Merge pull request #2242 from HedvigInsurance/revert-2241-feature/tie…
panasetskaya Oct 4, 2024
d70a8c2
show insurable limits, restore tests
panasetskaya Oct 4, 2024
d76d57d
add TierDisplayName field
panasetskaya Oct 4, 2024
5ddec79
add sorting by tierLevel
panasetskaya Oct 4, 2024
e9704a5
add pre-selection in dialog
panasetskaya Oct 4, 2024
5288864
do not take subOptions for the option if one of them contains Unknown…
panasetskaya Oct 4, 2024
2709da6
make feedBack required if UnKnownActions
panasetskaya Oct 4, 2024
0265048
add subtitles; don't show 0 percentage deductible
panasetskaya Oct 4, 2024
b2f4823
remove debug logs
panasetskaya Oct 4, 2024
1fe7982
Revert "Revert "TIER FLOW TEST SESSION - to revert!""
panasetskaya Oct 7, 2024
2a06c1a
Merge branch 'refs/heads/develop' into feature/tier-selfservice-compa…
panasetskaya Oct 7, 2024
dd857fc
Merge pull request #2243 from HedvigInsurance/feature/tier-selfservic…
panasetskaya Oct 7, 2024
1c3bd8c
fix schema version for db
panasetskaya Oct 7, 2024
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
@@ -1,5 +1,7 @@
fragment ProductVariantFragment on ProductVariant {
displayName
displayNameTier
displayNameTierLong
typeOfContract
partner
perils {
Expand Down
2 changes: 2 additions & 0 deletions app/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,8 @@ dependencies {
implementation(projects.theme)
implementation(projects.trackingCore)
implementation(projects.trackingDatadog)
implementation(projects.featureChooseTier)
implementation(projects.dataChangetier)

debugImplementation(libs.androidx.compose.uiTestManifest)
debugImplementation(libs.androidx.compose.uiTooling)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import com.hedvig.android.core.common.di.datastoreFileQualifier
import com.hedvig.android.core.datastore.di.dataStoreModule
import com.hedvig.android.core.demomode.di.demoModule
import com.hedvig.android.core.fileupload.fileUploadModule
import com.hedvig.android.data.changetier.di.dataChangeTierModule
import com.hedvig.android.data.chat.di.dataChatModule
import com.hedvig.android.data.claimflow.di.claimFlowDataModule
import com.hedvig.android.data.conversations.di.dataConversationsModule
Expand All @@ -50,6 +51,7 @@ import com.hedvig.android.data.termination.di.terminationDataModule
import com.hedvig.android.datadog.core.addDatadogConfiguration
import com.hedvig.android.datadog.core.di.datadogModule
import com.hedvig.android.datadog.demo.tracking.di.datadogDemoTrackingModule
import com.hedvig.android.feature.change.tier.di.chooseTierModule
import com.hedvig.android.feature.changeaddress.di.changeAddressModule
import com.hedvig.android.feature.chat.di.chatModule
import com.hedvig.android.feature.claim.details.di.claimDetailsModule
Expand Down Expand Up @@ -297,6 +299,7 @@ val applicationModule = module {
authModule,
buildConstantsModule,
changeAddressModule,
chooseTierModule,
chatModule,
claimDetailsModule,
claimFlowDataModule,
Expand All @@ -307,6 +310,7 @@ val applicationModule = module {
coreAppReviewModule,
coreCommonModule,
dataChatModule,
dataChangeTierModule,
dataConversationsModule,
dataPayingMemberModule,
dataStoreModule,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ import com.hedvig.android.core.buildconstants.HedvigBuildConstants
import com.hedvig.android.core.designsystem.material3.motion.MotionDefaults
import com.hedvig.android.data.claimflow.ClaimFlowStep
import com.hedvig.android.data.claimflow.toClaimFlowDestination
import com.hedvig.android.feature.change.tier.navigation.ChooseTierGraphDestination
import com.hedvig.android.feature.change.tier.navigation.InsuranceCustomizationParameters
import com.hedvig.android.feature.change.tier.navigation.changeTierGraph
import com.hedvig.android.feature.changeaddress.navigation.changeAddressGraph
import com.hedvig.android.feature.chat.navigation.ChatDestination
import com.hedvig.android.feature.chat.navigation.ChatDestinations
Expand Down Expand Up @@ -158,6 +161,14 @@ internal fun HedvigNavHost(
openUrl = openUrl,
navigator = navigator,
)
changeTierGraph(
openUrl = openUrl,
navigator = navigator,
navController = hedvigAppState.navController,
onNavigateToNewConversation = { backStackEntry ->
navigateToNewConversation(backStackEntry)
},
)
insuranceGraph(
nestedGraphs = {
terminateInsuranceGraph(
Expand Down Expand Up @@ -195,6 +206,27 @@ internal fun HedvigNavHost(
finishApp()
}
},
redirectToChangeTierFlow = { backStackEntry, idWithIntent ->
with(navigator) {
backStackEntry.navigate(
destination = ChooseTierGraphDestination(
InsuranceCustomizationParameters(
insuranceId = idWithIntent.first,
activationDateEpochDays = idWithIntent.second.activationDate.toEpochDays(),
currentTierLevel = idWithIntent.second.currentTierLevel,
currentTierName = idWithIntent.second.currentTierName,
quoteIds = idWithIntent.second.quotes.map {
it.id
},
),
),
) {
typedPopUpTo<TerminateInsuranceGraphDestination> {
inclusive = true
}
}
}
},
)
},
navigator = navigator,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ val datastoreFileQualifier = qualifier("datastoreFileQualifier")
*/
val databaseFileQualifier = qualifier("databaseFileQualifier")

/**
* The [java.io.File] to be used by Room to store the Change Tier Quotes database in.
*/
val tierQuotesDatabaseFileQualifier = qualifier("tierQuotesDatabaseFileQualifier")
panasetskaya marked this conversation as resolved.
Show resolved Hide resolved

/**
* A qualifier to pass a [kotlin.coroutines.CoroutineContext] which should default to
* [kotlinx.coroutines.Dispatchers.IO] for production code
Expand Down
34 changes: 34 additions & 0 deletions app/data/data-changetier/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
plugins {
id("hedvig.android.ktlint")
id("hedvig.android.library")
alias(libs.plugins.squareSortDependencies)
alias(libs.plugins.apollo)
alias(libs.plugins.serialization)
}

dependencies {

implementation(libs.apollo.normalizedCache)
implementation(libs.apollo.runtime)
implementation(libs.arrow.core)
implementation(libs.koin.core)
implementation(libs.kotlinx.datetime)
implementation(projects.apolloCore)
implementation(projects.apolloOctopusPublic)
implementation(projects.coreCommonPublic)
implementation(projects.coreUiData)
implementation(projects.dataContractPublic)
implementation(projects.featureFlagsPublic)
implementation(projects.dataProductVariantPublic)
implementation(projects.dataProductVariantAndroid)
implementation(libs.kotlinx.serialization.core)
implementation(libs.kotlinx.serialization.json)
implementation(projects.dataChat)
}

apollo {
service("octopus") {
packageName = "octopus"
dependsOn(projects.apolloOctopusPublic, true)
}
}
2 changes: 2 additions & 0 deletions app/data/data-changetier/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest />
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
mutation ChangeTierDeductibleCreateIntent($contractId: ID!, $source: ChangeTierDeductibleSource!) {
changeTierDeductibleCreateIntent(input:{ contractId: $contractId, source: $source }) {
intent {
activationDate
currentTierLevel
currentTierName
quotes {
deductible {
amount {
...MoneyFragment
}
displayText
percentage
}
displayItems {
displaySubtitle
displayTitle
displayValue
}
id
premium {
...MoneyFragment
}
productVariant {
...ProductVariantFragment
}
tierLevel
tierName
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.hedvig.android.data.changetier.data

import arrow.core.Either
import com.hedvig.android.core.common.ErrorMessage
import com.hedvig.android.data.changetier.database.TierQuoteMapper
import com.hedvig.android.data.chat.database.TierQuoteDao

interface ChangeTierRepository {
suspend fun startChangeTierIntentAndGetQuotesId(
insuranceId: String,
source: ChangeTierCreateSource,
): Either<ErrorMessage, ChangeTierDeductibleIntent>

suspend fun getQuoteById(id: String): TierDeductibleQuote // TODO: I guess it better to be Either too?
panasetskaya marked this conversation as resolved.
Show resolved Hide resolved

suspend fun getQuotesById(ids: List<String>): List<TierDeductibleQuote>

suspend fun addQuotesToDb(quotes: List<TierDeductibleQuote>)
}

internal class ChangeTierRepositoryImpl(
private val createChangeTierDeductibleIntentUseCase: CreateChangeTierDeductibleIntentUseCase,
private val tierQuoteDao: TierQuoteDao,
private val mapper: TierQuoteMapper,
) : ChangeTierRepository {
override suspend fun startChangeTierIntentAndGetQuotesId(
insuranceId: String,
source: ChangeTierCreateSource,
): Either<ErrorMessage, ChangeTierDeductibleIntent> {
tierQuoteDao.clearAllQuotes()
val result = createChangeTierDeductibleIntentUseCase.invoke(insuranceId, source)
result.onRight { intent ->
val quotes = intent.quotes.map { quote ->
mapper.quoteToDbModel(quote)
}
tierQuoteDao.insertAll(quotes)
}
return result
}

override suspend fun getQuoteById(id: String): TierDeductibleQuote {
val dbModel = tierQuoteDao.getOneQuoteById(id)
return mapper.dbModelToQuote(dbModel)
}

override suspend fun getQuotesById(ids: List<String>): List<TierDeductibleQuote> {
val list = tierQuoteDao.getQuotesById(ids)
return list.map { entity ->
mapper.dbModelToQuote(entity)
}
}

override suspend fun addQuotesToDb(quotes: List<TierDeductibleQuote>) {
val mapped = quotes.map { quote ->
mapper.quoteToDbModel(quote)
}
tierQuoteDao.insertAll(mapped)
}
}
Loading
Loading