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
87 changes: 49 additions & 38 deletions app/feature/feature-travel-certificate/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
plugins {
id("hedvig.android.library")
id("hedvig.multiplatform.library")
id("hedvig.multiplatform.library.android")
id("hedvig.gradle.plugin")
}

Expand All @@ -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)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<HedvigNavKey>.travelCertificateEntries(
backstack: Backstack,
Expand All @@ -42,7 +43,7 @@ fun EntryProviderScope<HedvigNavKey>.travelCertificateEntries(
},
onShareTravelCertificate = {
viewModel.emit(CertificateHistoryEvent.HaveProcessedCertificateUri)
localContext.sharePDF(it, applicationId)
localContext.sharePDF(File(it.path), applicationId)
},
onNavigateToAddonPurchaseFlow = onNavigateToAddonPurchaseFlow,
)
Expand Down Expand Up @@ -95,7 +96,7 @@ fun EntryProviderScope<HedvigNavKey>.travelCertificateEntries(
viewModel = viewModel,
navigateUp = backstack::navigateUp,
onShareTravelCertificate = {
context.sharePDF(it, applicationId)
context.sharePDF(File(it.path), applicationId)
},
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -84,7 +87,7 @@ internal fun TravelCertificateHistoryDestination(
onNavigateToChooseContract: () -> Unit,
onNavigateToAddonPurchaseFlow: (ids: List<String>) -> Unit,
navigateUp: () -> Unit,
onShareTravelCertificate: (File) -> Unit,
onShareTravelCertificate: (DownloadedFile) -> Unit,
) {
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
TravelCertificateHistoryScreen(
Expand Down Expand Up @@ -120,7 +123,7 @@ private fun TravelCertificateHistoryScreen(
onGoToChooseContract: () -> Unit,
navigateUp: () -> Unit,
onDismissDownloadCertificateError: () -> Unit,
onShareTravelCertificate: (File) -> Unit,
onShareTravelCertificate: (DownloadedFile) -> Unit,
uiState: CertificateHistoryUiState,
) {
val explanationSheetState = rememberHedvigBottomSheetState<Unit>()
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand All @@ -37,15 +37,14 @@ 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
internal fun TravelCertificateOverviewDestination(
travelCertificateUrl: TravelCertificateUrl,
viewModel: TravelCertificateOverviewViewModel,
navigateUp: () -> Unit,
onShareTravelCertificate: (File) -> Unit,
onShareTravelCertificate: (DownloadedFile) -> Unit,
) {
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
TravelCertificateOverview(
Expand All @@ -66,7 +65,7 @@ internal fun TravelCertificateOverview(
onDownloadCertificate: (TravelCertificateUrl) -> Unit,
onRetry: () -> Unit,
navigateUp: () -> Unit,
onShareTravelCertificate: (File) -> Unit,
onShareTravelCertificate: (DownloadedFile) -> Unit,
uiState: TravelCertificateOverviewUiState,
) {
when (uiState) {
Expand All @@ -89,7 +88,7 @@ internal fun TravelCertificateOverview(
is Success -> {
LaunchedEffect(uiState.travelCertificateUri) {
uiState.travelCertificateUri?.let {
onShareTravelCertificate(File(it.path))
onShareTravelCertificate(it)
}
}
HedvigScaffold(
Expand Down Expand Up @@ -121,7 +120,7 @@ internal fun TravelCertificateOverview(
},
onClick = {
if (uiState.travelCertificateUri != null) {
onShareTravelCertificate(File(uiState.travelCertificateUri.path))
onShareTravelCertificate(uiState.travelCertificateUri)
} else {
onDownloadCertificate(travelCertificateUrl)
}
Expand Down
Loading