From cb8cb7b83f7392c028f1c71ef7f7a49b6cecf7dd Mon Sep 17 00:00:00 2001 From: stylianosgakis Date: Thu, 12 Nov 2026 12:48:14 +0100 Subject: [PATCH 1/2] Move feature-travel-certificate sources into KMP source sets --- .../src/{main => androidMain}/AndroidManifest.xml | 0 .../travelcertificate/navigation/TravelCertificateEntries.kt | 0 .../graphql/MutationTravelCertificateCreate.graphql | 0 .../graphql/QueryCoInsuredForContract.graphql | 0 .../{main => commonMain}/graphql/QueryCurrentContracts.graphql | 0 .../graphql/QueryEligibleContractsWithAddress.graphql | 0 .../graphql/QueryTravelCertificateHistory.graphql | 0 .../graphql/QueryTravelCertificateSpecifications.graphql | 0 ...heckTravelCertificateAvailabilityForCurrentContractsUseCase.kt | 0 .../travelcertificate/data/CreateTravelCertificateUseCase.kt | 0 .../travelcertificate/data/GetCoInsuredForContractUseCase.kt | 0 .../data/GetEligibleContractsWithAddressUseCase.kt | 0 .../data/GetTravelCertificateSpecificationsUseCase.kt | 0 .../travelcertificate/data/GetTravelCertificatesHistoryUseCase.kt | 0 .../travelcertificate/navigation/TravelCertificateDeepLinks.kt | 0 .../travelcertificate/navigation/TravelCertificateDestination.kt | 0 .../travelcertificate/ui/TravelCertificateInfoBottomSheet.kt | 0 .../travelcertificate/ui/choose/ChooseContractForCertificate.kt | 0 .../ui/choose/ChooseContractForCertificateViewModel.kt | 0 .../ui/generatewhen/TravelCertificateDateInput.kt | 0 .../ui/generatewhen/TravelCertificateDateInputViewModel.kt | 0 .../ui/generatewho/TravelCertificateTravellersInput.kt | 0 .../ui/generatewho/TravelCertificateTravellersInputViewModel.kt | 0 .../travelcertificate/ui/history/CertificateHistoryViewModel.kt | 0 .../travelcertificate/ui/history/TravelCertificateHistory.kt | 0 .../travelcertificate/ui/overview/TravelCertificateOverview.kt | 0 .../ui/overview/TravelCertificateOverviewViewModel.kt | 0 .../GetTravelCertificateSpecificationsUseCaseTest.kt | 0 28 files changed, 0 insertions(+), 0 deletions(-) rename app/feature/feature-travel-certificate/src/{main => androidMain}/AndroidManifest.xml (100%) rename app/feature/feature-travel-certificate/src/{main => androidMain}/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateEntries.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/graphql/MutationTravelCertificateCreate.graphql (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/graphql/QueryCoInsuredForContract.graphql (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/graphql/QueryCurrentContracts.graphql (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/graphql/QueryEligibleContractsWithAddress.graphql (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/graphql/QueryTravelCertificateHistory.graphql (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/graphql/QueryTravelCertificateSpecifications.graphql (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/data/CheckTravelCertificateAvailabilityForCurrentContractsUseCase.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/data/CreateTravelCertificateUseCase.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/data/GetCoInsuredForContractUseCase.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/data/GetEligibleContractsWithAddressUseCase.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/data/GetTravelCertificateSpecificationsUseCase.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/data/GetTravelCertificatesHistoryUseCase.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateDeepLinks.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateDestination.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/ui/TravelCertificateInfoBottomSheet.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/ui/choose/ChooseContractForCertificate.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/ui/choose/ChooseContractForCertificateViewModel.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInput.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInputViewModel.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewho/TravelCertificateTravellersInput.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewho/TravelCertificateTravellersInputViewModel.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/ui/history/CertificateHistoryViewModel.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/ui/history/TravelCertificateHistory.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/ui/overview/TravelCertificateOverview.kt (100%) rename app/feature/feature-travel-certificate/src/{main => commonMain}/kotlin/com/hedvig/android/feature/travelcertificate/ui/overview/TravelCertificateOverviewViewModel.kt (100%) rename app/feature/feature-travel-certificate/src/{test => jvmTest}/kotlin/com/hedvig/android/feature/travelcertificate/GetTravelCertificateSpecificationsUseCaseTest.kt (100%) diff --git a/app/feature/feature-travel-certificate/src/main/AndroidManifest.xml b/app/feature/feature-travel-certificate/src/androidMain/AndroidManifest.xml similarity index 100% rename from app/feature/feature-travel-certificate/src/main/AndroidManifest.xml rename to app/feature/feature-travel-certificate/src/androidMain/AndroidManifest.xml diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateEntries.kt b/app/feature/feature-travel-certificate/src/androidMain/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateEntries.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateEntries.kt rename to app/feature/feature-travel-certificate/src/androidMain/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateEntries.kt diff --git a/app/feature/feature-travel-certificate/src/main/graphql/MutationTravelCertificateCreate.graphql b/app/feature/feature-travel-certificate/src/commonMain/graphql/MutationTravelCertificateCreate.graphql similarity index 100% rename from app/feature/feature-travel-certificate/src/main/graphql/MutationTravelCertificateCreate.graphql rename to app/feature/feature-travel-certificate/src/commonMain/graphql/MutationTravelCertificateCreate.graphql diff --git a/app/feature/feature-travel-certificate/src/main/graphql/QueryCoInsuredForContract.graphql b/app/feature/feature-travel-certificate/src/commonMain/graphql/QueryCoInsuredForContract.graphql similarity index 100% rename from app/feature/feature-travel-certificate/src/main/graphql/QueryCoInsuredForContract.graphql rename to app/feature/feature-travel-certificate/src/commonMain/graphql/QueryCoInsuredForContract.graphql diff --git a/app/feature/feature-travel-certificate/src/main/graphql/QueryCurrentContracts.graphql b/app/feature/feature-travel-certificate/src/commonMain/graphql/QueryCurrentContracts.graphql similarity index 100% rename from app/feature/feature-travel-certificate/src/main/graphql/QueryCurrentContracts.graphql rename to app/feature/feature-travel-certificate/src/commonMain/graphql/QueryCurrentContracts.graphql diff --git a/app/feature/feature-travel-certificate/src/main/graphql/QueryEligibleContractsWithAddress.graphql b/app/feature/feature-travel-certificate/src/commonMain/graphql/QueryEligibleContractsWithAddress.graphql similarity index 100% rename from app/feature/feature-travel-certificate/src/main/graphql/QueryEligibleContractsWithAddress.graphql rename to app/feature/feature-travel-certificate/src/commonMain/graphql/QueryEligibleContractsWithAddress.graphql diff --git a/app/feature/feature-travel-certificate/src/main/graphql/QueryTravelCertificateHistory.graphql b/app/feature/feature-travel-certificate/src/commonMain/graphql/QueryTravelCertificateHistory.graphql similarity index 100% rename from app/feature/feature-travel-certificate/src/main/graphql/QueryTravelCertificateHistory.graphql rename to app/feature/feature-travel-certificate/src/commonMain/graphql/QueryTravelCertificateHistory.graphql diff --git a/app/feature/feature-travel-certificate/src/main/graphql/QueryTravelCertificateSpecifications.graphql b/app/feature/feature-travel-certificate/src/commonMain/graphql/QueryTravelCertificateSpecifications.graphql similarity index 100% rename from app/feature/feature-travel-certificate/src/main/graphql/QueryTravelCertificateSpecifications.graphql rename to app/feature/feature-travel-certificate/src/commonMain/graphql/QueryTravelCertificateSpecifications.graphql diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/data/CheckTravelCertificateAvailabilityForCurrentContractsUseCase.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/data/CheckTravelCertificateAvailabilityForCurrentContractsUseCase.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/data/CheckTravelCertificateAvailabilityForCurrentContractsUseCase.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/data/CheckTravelCertificateAvailabilityForCurrentContractsUseCase.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/data/CreateTravelCertificateUseCase.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/data/CreateTravelCertificateUseCase.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/data/CreateTravelCertificateUseCase.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/data/CreateTravelCertificateUseCase.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/data/GetCoInsuredForContractUseCase.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/data/GetCoInsuredForContractUseCase.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/data/GetCoInsuredForContractUseCase.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/data/GetCoInsuredForContractUseCase.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/data/GetEligibleContractsWithAddressUseCase.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/data/GetEligibleContractsWithAddressUseCase.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/data/GetEligibleContractsWithAddressUseCase.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/data/GetEligibleContractsWithAddressUseCase.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/data/GetTravelCertificateSpecificationsUseCase.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/data/GetTravelCertificateSpecificationsUseCase.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/data/GetTravelCertificateSpecificationsUseCase.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/data/GetTravelCertificateSpecificationsUseCase.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/data/GetTravelCertificatesHistoryUseCase.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/data/GetTravelCertificatesHistoryUseCase.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/data/GetTravelCertificatesHistoryUseCase.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/data/GetTravelCertificatesHistoryUseCase.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateDeepLinks.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateDeepLinks.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateDeepLinks.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateDeepLinks.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateDestination.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateDestination.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateDestination.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateDestination.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/TravelCertificateInfoBottomSheet.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/TravelCertificateInfoBottomSheet.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/TravelCertificateInfoBottomSheet.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/TravelCertificateInfoBottomSheet.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/choose/ChooseContractForCertificate.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/choose/ChooseContractForCertificate.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/choose/ChooseContractForCertificate.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/choose/ChooseContractForCertificate.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/choose/ChooseContractForCertificateViewModel.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/choose/ChooseContractForCertificateViewModel.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/choose/ChooseContractForCertificateViewModel.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/choose/ChooseContractForCertificateViewModel.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInput.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInput.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInput.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInput.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInputViewModel.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInputViewModel.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInputViewModel.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInputViewModel.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewho/TravelCertificateTravellersInput.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewho/TravelCertificateTravellersInput.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewho/TravelCertificateTravellersInput.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewho/TravelCertificateTravellersInput.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewho/TravelCertificateTravellersInputViewModel.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewho/TravelCertificateTravellersInputViewModel.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewho/TravelCertificateTravellersInputViewModel.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewho/TravelCertificateTravellersInputViewModel.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/history/CertificateHistoryViewModel.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/history/CertificateHistoryViewModel.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/history/CertificateHistoryViewModel.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/history/CertificateHistoryViewModel.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/history/TravelCertificateHistory.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/history/TravelCertificateHistory.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/history/TravelCertificateHistory.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/history/TravelCertificateHistory.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/overview/TravelCertificateOverview.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/overview/TravelCertificateOverview.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/overview/TravelCertificateOverview.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/overview/TravelCertificateOverview.kt diff --git a/app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/overview/TravelCertificateOverviewViewModel.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/overview/TravelCertificateOverviewViewModel.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/main/kotlin/com/hedvig/android/feature/travelcertificate/ui/overview/TravelCertificateOverviewViewModel.kt rename to app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/overview/TravelCertificateOverviewViewModel.kt diff --git a/app/feature/feature-travel-certificate/src/test/kotlin/com/hedvig/android/feature/travelcertificate/GetTravelCertificateSpecificationsUseCaseTest.kt b/app/feature/feature-travel-certificate/src/jvmTest/kotlin/com/hedvig/android/feature/travelcertificate/GetTravelCertificateSpecificationsUseCaseTest.kt similarity index 100% rename from app/feature/feature-travel-certificate/src/test/kotlin/com/hedvig/android/feature/travelcertificate/GetTravelCertificateSpecificationsUseCaseTest.kt rename to app/feature/feature-travel-certificate/src/jvmTest/kotlin/com/hedvig/android/feature/travelcertificate/GetTravelCertificateSpecificationsUseCaseTest.kt From d7ebb62e82538fb4805182b616b658c15b27b817 Mon Sep 17 00:00:00 2001 From: stylianosgakis Date: Thu, 12 Nov 2026 12:52:49 +0100 Subject: [PATCH 2/2] Convert feature-travel-certificate to Kotlin Multiplatform The module now builds for JVM and Android, with its keys, screens, presenters, ViewModels, use cases and deep link provider in commonMain. Email validation uses the commonMain isValidEmail, and the history and overview screens hand the downloaded PDF out as a DownloadedFile. java.util.Locale in the date input preview becomes previewCommonLocale, and the history preview reads today's date through kotlinx-datetime. The unused android.R.attr.enabled import is dropped. Unit tests run as jvmTest. TravelCertificateEntries stays in androidMain because sharing the PDF needs LocalContext and Context.sharePDF. --- .../build.gradle.kts | 87 +++++++++++-------- .../navigation/TravelCertificateEntries.kt | 5 +- .../TravelCertificateDateInput.kt | 4 +- .../TravelCertificateDateInputViewModel.kt | 6 +- .../ui/history/TravelCertificateHistory.kt | 23 ++--- .../ui/overview/TravelCertificateOverview.kt | 11 ++- 6 files changed, 70 insertions(+), 66 deletions(-) diff --git a/app/feature/feature-travel-certificate/build.gradle.kts b/app/feature/feature-travel-certificate/build.gradle.kts index 334157b3db..1ba8f6f1a3 100644 --- a/app/feature/feature-travel-certificate/build.gradle.kts +++ b/app/feature/feature-travel-certificate/build.gradle.kts @@ -1,5 +1,6 @@ plugins { - id("hedvig.android.library") + id("hedvig.multiplatform.library") + id("hedvig.multiplatform.library.android") id("hedvig.gradle.plugin") } @@ -11,41 +12,51 @@ hedvig { viewModels() } -dependencies { - implementation(libs.apollo.normalizedCache) - implementation(libs.apollo.runtime) - implementation(libs.arrow.core) - implementation(libs.arrow.fx) - implementation(libs.coroutines.core) - implementation(libs.jetbrains.lifecycle.runtime.compose) - implementation(libs.kotlinx.datetime) - implementation(libs.kotlinx.serialization.core) - implementation(projects.apolloCore) - implementation(projects.apolloOctopusPublic) - implementation(projects.coreCommonPublic) - implementation(projects.coreDemoMode) - implementation(projects.coreFileUpload) - implementation(projects.coreResources) - implementation(projects.dataAddons) - implementation(projects.dataContract) - implementation(projects.designSystemHedvig) - implementation(projects.featureFlags) - implementation(projects.languageCore) - implementation(projects.featureTravelCertificateNavigation) - implementation(projects.moleculePublic) - implementation(projects.navigationActivity) - implementation(projects.navigationCommon) - implementation(projects.navigationCompose) - implementation(projects.navigationCore) - - testImplementation(libs.apollo.testingSupport) - testImplementation(libs.assertK) - testImplementation(libs.coroutines.test) - testImplementation(libs.junit) - testImplementation(libs.testParameterInjector) - testImplementation(projects.apolloOctopusTest) - testImplementation(projects.apolloTest) - testImplementation(projects.coreCommonTest) - testImplementation(projects.featureFlagsTest) - testImplementation(projects.loggingTest) +kotlin { + sourceSets { + commonMain.dependencies { + implementation(libs.apollo.normalizedCache) + implementation(libs.apollo.runtime) + implementation(libs.arrow.core) + implementation(libs.arrow.fx) + implementation(libs.coroutines.core) + implementation(libs.jetbrains.compose.foundation) + implementation(libs.jetbrains.compose.runtime) + implementation(libs.jetbrains.compose.ui) + implementation(libs.jetbrains.compose.ui.tooling.preview) + implementation(libs.jetbrains.lifecycle.runtime.compose) + implementation(libs.kotlinx.datetime) + implementation(libs.kotlinx.serialization.core) + implementation(projects.apolloCore) + implementation(projects.apolloOctopusPublic) + implementation(projects.coreCommonPublic) + implementation(projects.coreDemoMode) + implementation(projects.coreFileUpload) + implementation(projects.coreLocale) + implementation(projects.coreResources) + implementation(projects.dataAddons) + implementation(projects.dataContract) + implementation(projects.designSystemHedvig) + implementation(projects.featureFlags) + implementation(projects.languageCore) + implementation(projects.featureTravelCertificateNavigation) + implementation(projects.moleculePublic) + implementation(projects.navigationActivity) + implementation(projects.navigationCommon) + implementation(projects.navigationCompose) + implementation(projects.navigationCore) + } + jvmTest.dependencies { + implementation(libs.apollo.testingSupport) + implementation(libs.assertK) + implementation(libs.coroutines.test) + implementation(libs.junit) + implementation(libs.testParameterInjector) + implementation(projects.apolloOctopusTest) + implementation(projects.apolloTest) + implementation(projects.coreCommonTest) + implementation(projects.featureFlagsTest) + implementation(projects.loggingTest) + } + } } diff --git a/app/feature/feature-travel-certificate/src/androidMain/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateEntries.kt b/app/feature/feature-travel-certificate/src/androidMain/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateEntries.kt index 2430558a9a..e46335e7b3 100644 --- a/app/feature/feature-travel-certificate/src/androidMain/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateEntries.kt +++ b/app/feature/feature-travel-certificate/src/androidMain/kotlin/com/hedvig/android/feature/travelcertificate/navigation/TravelCertificateEntries.kt @@ -21,6 +21,7 @@ import com.hedvig.android.navigation.compose.add import com.hedvig.core.common.android.sharePDF import dev.zacsweers.metrox.viewmodel.assistedMetroViewModel import dev.zacsweers.metrox.viewmodel.metroViewModel +import java.io.File fun EntryProviderScope.travelCertificateEntries( backstack: Backstack, @@ -42,7 +43,7 @@ fun EntryProviderScope.travelCertificateEntries( }, onShareTravelCertificate = { viewModel.emit(CertificateHistoryEvent.HaveProcessedCertificateUri) - localContext.sharePDF(it, applicationId) + localContext.sharePDF(File(it.path), applicationId) }, onNavigateToAddonPurchaseFlow = onNavigateToAddonPurchaseFlow, ) @@ -95,7 +96,7 @@ fun EntryProviderScope.travelCertificateEntries( viewModel = viewModel, navigateUp = backstack::navigateUp, onShareTravelCertificate = { - context.sharePDF(it, applicationId) + context.sharePDF(File(it.path), applicationId) }, ) } diff --git a/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInput.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInput.kt index 2b84f9a68f..2c9bacd337 100644 --- a/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInput.kt +++ b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInput.kt @@ -19,6 +19,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.datasource.CollectionPreviewParameterProvider import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.hedvig.android.core.locale.previewCommonLocale import com.hedvig.android.design.system.hedvig.HedvigButton import com.hedvig.android.design.system.hedvig.HedvigDateTimeFormatterDefaults import com.hedvig.android.design.system.hedvig.HedvigErrorSection @@ -45,7 +46,6 @@ import hedvig.resources.Res import hedvig.resources.general_continue_button import hedvig.resources.travel_certificate_start_date_title import hedvig.resources.travel_certificate_when_is_your_trip -import java.util.Locale import kotlinx.datetime.LocalDate import org.jetbrains.compose.resources.stringResource @@ -236,7 +236,7 @@ private class ChooseInsuranceForAddonUiStateProvider : "id", "emaild", hasCoInsured = false, - datePickerState = HedvigDatePickerState(Locale.ENGLISH, null, null, 2020..2024, HedvigDisplayMode.Picker), + datePickerState = HedvigDatePickerState(previewCommonLocale, null, null, 2020..2024, HedvigDisplayMode.Picker), travelDate = LocalDate(2023, 1, 1), daysValid = 40, errorMessageRes = null, diff --git a/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInputViewModel.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInputViewModel.kt index 32d708217a..47a0a40d88 100644 --- a/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInputViewModel.kt +++ b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/generatewhen/TravelCertificateDateInputViewModel.kt @@ -24,7 +24,7 @@ import com.hedvig.android.molecule.public.MoleculeViewModel import com.hedvig.android.navigation.compose.Backstack import com.hedvig.android.navigation.compose.add import com.hedvig.android.navigation.compose.navigateAndPopUpTo -import com.hedvig.core.common.android.validation.validateEmail +import com.hedvig.core.common.android.validation.isValidEmail import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import hedvig.resources.PROFILE_MY_INFO_INVALID_EMAIL @@ -111,9 +111,7 @@ internal class TravelCertificateDateInputPresenter( fun validateInputAndContinue() { val successScreenContent = screenContent as? DateInputScreenContent.Success ?: return if (successScreenContent.details.email != null && - validateEmail( - successScreenContent.details.email, - ).isSuccessful + isValidEmail(successScreenContent.details.email) ) { if (successScreenContent.details.hasCoInsured) { backstack.add( diff --git a/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/history/TravelCertificateHistory.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/history/TravelCertificateHistory.kt index 6f05b8410c..ccfb6aa65c 100644 --- a/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/history/TravelCertificateHistory.kt +++ b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/history/TravelCertificateHistory.kt @@ -28,6 +28,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.dropUnlessResumed import arrow.core.nonEmptyListOf +import com.hedvig.android.core.fileupload.DownloadedFile import com.hedvig.android.data.addons.data.AddonBannerInfo import com.hedvig.android.data.addons.data.FlowType import com.hedvig.android.design.system.hedvig.ButtonDefaults.ButtonStyle.Secondary @@ -72,9 +73,11 @@ import hedvig.resources.travel_certificate_downloading_error import hedvig.resources.travel_certificate_empty_list_message import hedvig.resources.travel_certificate_expired import hedvig.resources.travel_certificate_get_travel_certificate_button -import java.io.File import kotlin.String +import kotlin.time.Clock import kotlinx.datetime.LocalDate +import kotlinx.datetime.TimeZone +import kotlinx.datetime.todayIn import org.jetbrains.compose.resources.stringResource @Composable @@ -84,7 +87,7 @@ internal fun TravelCertificateHistoryDestination( onNavigateToChooseContract: () -> Unit, onNavigateToAddonPurchaseFlow: (ids: List) -> Unit, navigateUp: () -> Unit, - onShareTravelCertificate: (File) -> Unit, + onShareTravelCertificate: (DownloadedFile) -> Unit, ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() TravelCertificateHistoryScreen( @@ -120,7 +123,7 @@ private fun TravelCertificateHistoryScreen( onGoToChooseContract: () -> Unit, navigateUp: () -> Unit, onDismissDownloadCertificateError: () -> Unit, - onShareTravelCertificate: (File) -> Unit, + onShareTravelCertificate: (DownloadedFile) -> Unit, uiState: CertificateHistoryUiState, ) { val explanationSheetState = rememberHedvigBottomSheetState() @@ -156,7 +159,7 @@ private fun TravelCertificateHistoryScreen( is SuccessDownloadingHistory -> { if (uiState.travelCertificateUri != null) { LaunchedEffect(uiState.travelCertificateUri) { - onShareTravelCertificate(File(uiState.travelCertificateUri.path)) + onShareTravelCertificate(uiState.travelCertificateUri) } } if (uiState.idsToNavigateToAddonPurchase != null) { @@ -509,11 +512,7 @@ private class TravelCertificateHistoryUiStatePreviewProvider : ), TravelCertificate( startDate = LocalDate(2023, 11, 25), - expiryDate = LocalDate( - java.time.LocalDate.now().year, - java.time.LocalDate.now().month, - java.time.LocalDate.now().dayOfMonth, - ), + expiryDate = Clock.System.todayIn(TimeZone.currentSystemDefault()), id = "13213", signedUrl = "wkehdkwed", isExpiredNow = true, @@ -537,11 +536,7 @@ private class TravelCertificateHistoryUiStatePreviewProvider : ), TravelCertificate( startDate = LocalDate(2023, 11, 25), - expiryDate = LocalDate( - java.time.LocalDate.now().year, - java.time.LocalDate.now().month, - java.time.LocalDate.now().dayOfMonth, - ), + expiryDate = Clock.System.todayIn(TimeZone.currentSystemDefault()), id = "13213", signedUrl = "wkehdkwed", isExpiredNow = true, diff --git a/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/overview/TravelCertificateOverview.kt b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/overview/TravelCertificateOverview.kt index afee237f5e..0f374b878c 100644 --- a/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/overview/TravelCertificateOverview.kt +++ b/app/feature/feature-travel-certificate/src/commonMain/kotlin/com/hedvig/android/feature/travelcertificate/ui/overview/TravelCertificateOverview.kt @@ -1,6 +1,5 @@ package com.hedvig.android.feature.travelcertificate.ui.overview -import android.R.attr.enabled import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth @@ -13,6 +12,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.hedvig.android.core.fileupload.DownloadedFile import com.hedvig.android.design.system.hedvig.EmptyState import com.hedvig.android.design.system.hedvig.EmptyStateDefaults.EmptyStateIconStyle.SUCCESS import com.hedvig.android.design.system.hedvig.HedvigButton @@ -37,7 +37,6 @@ import hedvig.resources.travel_certificate_download_recommendation import hedvig.resources.travel_certificate_download_travel_certificate import hedvig.resources.travel_certificate_share_travel_certificate import hedvig.resources.travel_certificate_travel_certificate_ready_description -import java.io.File import org.jetbrains.compose.resources.stringResource @Composable @@ -45,7 +44,7 @@ internal fun TravelCertificateOverviewDestination( travelCertificateUrl: TravelCertificateUrl, viewModel: TravelCertificateOverviewViewModel, navigateUp: () -> Unit, - onShareTravelCertificate: (File) -> Unit, + onShareTravelCertificate: (DownloadedFile) -> Unit, ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() TravelCertificateOverview( @@ -66,7 +65,7 @@ internal fun TravelCertificateOverview( onDownloadCertificate: (TravelCertificateUrl) -> Unit, onRetry: () -> Unit, navigateUp: () -> Unit, - onShareTravelCertificate: (File) -> Unit, + onShareTravelCertificate: (DownloadedFile) -> Unit, uiState: TravelCertificateOverviewUiState, ) { when (uiState) { @@ -89,7 +88,7 @@ internal fun TravelCertificateOverview( is Success -> { LaunchedEffect(uiState.travelCertificateUri) { uiState.travelCertificateUri?.let { - onShareTravelCertificate(File(it.path)) + onShareTravelCertificate(it) } } HedvigScaffold( @@ -121,7 +120,7 @@ internal fun TravelCertificateOverview( }, onClick = { if (uiState.travelCertificateUri != null) { - onShareTravelCertificate(File(uiState.travelCertificateUri.path)) + onShareTravelCertificate(uiState.travelCertificateUri) } else { onDownloadCertificate(travelCertificateUrl) }