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/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 97% 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 index 2430558a9a..e46335e7b3 100644 --- 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 @@ -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/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 97% 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 index 2b84f9a68f..2c9bacd337 100644 --- 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 @@ -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/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 98% 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 index 32d708217a..47a0a40d88 100644 --- 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 @@ -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/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 97% 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 index 6f05b8410c..ccfb6aa65c 100644 --- 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 @@ -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/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 95% 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 index afee237f5e..0f374b878c 100644 --- 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 @@ -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) } 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