Skip to content
Draft
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
Original file line number Diff line number Diff line change
Expand Up @@ -230,8 +230,12 @@ private fun EntryProviderScope<HedvigNavKey>.addHomeEntries(
backstack.add(CoInsuredAddInfoKey(contractId, type))
},
navigateToHelpCenter = { backstack.add(HelpCenterKey) },
navigateToClaimChat = {
backstack.add(ClaimChatKey(messageId = null, isDevelopmentFlow = false))
navigateToClaimChat = { resumableClaimId ->
backstack.add(ClaimChatKey(
messageId = null,
isDevelopmentFlow = false,
resumableClaimId = resumableClaimId,
))
},
navigateToChipIdScreen = { backstack.add(ChipIdKey()) },
openAppSettings = externalNavigator::openAppSettings,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.heading
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.dropUnlessResumed
import com.hedvig.android.compose.ui.preview.BooleanCollectionPreviewParameterProvider
import com.hedvig.android.design.system.hedvig.api.HedvigBottomSheetState
import com.hedvig.android.design.system.hedvig.icon.Checkmark
import com.hedvig.android.design.system.hedvig.icon.HedvigIcons
Expand All @@ -40,8 +42,13 @@ import hedvig.resources.general_cancel_button
import hedvig.resources.general_continue_button
import org.jetbrains.compose.resources.stringResource

data class StartClaimSheetData(val resumableClaimId: String?)
@Composable
fun StartClaimBottomSheet(state: HedvigBottomSheetState<Unit>, navigateToClaimChat: () -> Unit) {
fun StartClaimBottomSheet(
state: HedvigBottomSheetState<StartClaimSheetData>,
navigateToClaimChat: () -> Unit,
navigateToOldClaim: () -> Unit,
) {
HedvigBottomSheet(
hedvigBottomSheetState = state,
content = {
Expand All @@ -54,18 +61,27 @@ fun StartClaimBottomSheet(state: HedvigBottomSheetState<Unit>, navigateToClaimCh
navigateToClaimChat()
}
},
navigateToOldClaim = {
state.dismiss {
navigateToOldClaim()
}
},
resumableClaimId = state.data?.resumableClaimId
)
},
)
}


@Composable
fun StartClaimPledgeScreen(navigateUp: () -> Unit, navigateToClaimChat: () -> Unit, modifier: Modifier = Modifier) {
fun StartClaimPledgeScreen(
navigateUp: () -> Unit,
navigateToClaimChat: () -> Unit,
modifier: Modifier = Modifier,
) {
var isChecked by remember { mutableStateOf(false) }
Column(
modifier
.verticalScroll(rememberScrollState()),
) {
Column(modifier
.verticalScroll(rememberScrollState())) {
PledgeNotes()
Spacer(Modifier.weight(1f))
Spacer(Modifier.height(8.dp))
Expand All @@ -76,14 +92,21 @@ fun StartClaimPledgeScreen(navigateUp: () -> Unit, navigateToClaimChat: () -> Un
},
navigateToClaimChat = navigateToClaimChat,
dismiss = navigateUp,
resumableClaimId = null,
navigateToOldClaim = {}
)
Spacer(Modifier.height(8.dp))
Spacer(Modifier.windowInsetsBottomHeight(WindowInsets.safeDrawing))
}
}

@Composable
private fun StartClaimBottomSheetContent(dismiss: () -> Unit, navigateToClaimChat: () -> Unit) {
private fun StartClaimBottomSheetContent(
dismiss: () -> Unit,
navigateToClaimChat: () -> Unit,
navigateToOldClaim: () -> Unit,
resumableClaimId: String?
) {
var isChecked by remember { mutableStateOf(false) }
Column {
Spacer(Modifier.height(16.dp))
Expand All @@ -104,6 +127,8 @@ private fun StartClaimBottomSheetContent(dismiss: () -> Unit, navigateToClaimCha
},
navigateToClaimChat = navigateToClaimChat,
dismiss = dismiss,
navigateToOldClaim = navigateToOldClaim,
resumableClaimId = resumableClaimId
)
Spacer(Modifier.height(8.dp))
Spacer(Modifier.windowInsetsBottomHeight(WindowInsets.safeDrawing))
Expand All @@ -116,6 +141,8 @@ private fun StartClaimBottomContent(
onCheckedChange: () -> Unit,
navigateToClaimChat: () -> Unit,
dismiss: () -> Unit,
navigateToOldClaim: () -> Unit,
resumableClaimId: String?
) {
Column {
ImportantInfoCheckBox(
Expand All @@ -132,6 +159,18 @@ private fun StartClaimBottomContent(
modifier = Modifier.fillMaxWidth(),
)
Spacer(Modifier.height(16.dp))
if (resumableClaimId!=null) {
HedvigButton(
buttonStyle = ButtonDefaults.ButtonStyle.PrimaryAlt,
text = "Continue with the draft claim",
enabled = true,
onClick = dropUnlessResumed {
navigateToOldClaim()
},
modifier = Modifier.fillMaxWidth(),
)
Spacer(Modifier.height(16.dp))
}
HedvigButton(
text = stringResource(Res.string.general_cancel_button),
enabled = true,
Expand Down Expand Up @@ -207,12 +246,18 @@ private fun ImportantInfoCheckBox(isChecked: Boolean, onCheckedChange: () -> Uni

@HedvigPreview
@Composable
private fun PreviewStartClaimBottomSheetContent() {
private fun PreviewStartClaimBottomSheetContent(
@PreviewParameter(
BooleanCollectionPreviewParameterProvider::class,
) hasResumableClaim: Boolean,
) {
HedvigTheme {
Surface(color = HedvigTheme.colorScheme.backgroundPrimary) {
StartClaimBottomSheetContent(
{},
navigateToClaimChat = {},
navigateToOldClaim = {},
resumableClaimId = if (hasResumableClaim) "" else null
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ import com.hedvig.android.design.system.hedvig.HighlightLabelDefaults.HighlightS
import com.hedvig.android.design.system.hedvig.HorizontalItemsWithMaximumSpaceTaken
import com.hedvig.android.design.system.hedvig.Icon
import com.hedvig.android.design.system.hedvig.StartClaimBottomSheet
import com.hedvig.android.design.system.hedvig.StartClaimSheetData
import com.hedvig.android.design.system.hedvig.Surface
import com.hedvig.android.design.system.hedvig.TopAppBar
import com.hedvig.android.design.system.hedvig.TopAppBarActionType
Expand Down Expand Up @@ -131,7 +132,7 @@ private fun InboxScreen(
navigateToClaimChat: () -> Unit,
) {
val newChatSelectBottomSheetState = rememberHedvigBottomSheetState<Unit>()
val startClaimBottomSheetState = rememberHedvigBottomSheetState<Unit>()
val startClaimBottomSheetState = rememberHedvigBottomSheetState<StartClaimSheetData>()
HedvigBottomSheet(
newChatSelectBottomSheetState,
content = {
Expand All @@ -142,7 +143,7 @@ private fun InboxScreen(
},
onStartNewClaim = {
newChatSelectBottomSheetState.dismiss()
startClaimBottomSheetState.show(Unit)
startClaimBottomSheetState.show(StartClaimSheetData(null))
},
dismiss = {
newChatSelectBottomSheetState.dismiss()
Expand All @@ -156,6 +157,7 @@ private fun InboxScreen(
startClaimBottomSheetState.dismiss()
navigateToClaimChat()
},
navigateToOldClaim = {}
)
Surface(
color = HedvigTheme.colorScheme.backgroundPrimary,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ internal class AndroidAudioRecordingManager(
if (!file.exists()) {
onStateUpdate(
AudioRecordingStepState.AudioRecording.Playback(
filePath = filePath,
audioPath = AudioPath.FilePath(filePath),
isPlaying = false,
isPrepared = false,
hasError = true,
Expand All @@ -100,7 +100,7 @@ internal class AndroidAudioRecordingManager(
setOnPreparedListener {
onStateUpdate(
AudioRecordingStepState.AudioRecording.Playback(
filePath = filePath,
audioPath = AudioPath.FilePath(filePath),
isPlaying = false,
isPrepared = true,
hasError = false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import kotlinx.serialization.Serializable
data class ClaimChatKey(
val isDevelopmentFlow: Boolean = false,
val messageId: String? = null,
val resumableClaimId: String? = null,
) : HedvigNavKey

@Serializable
Expand Down Expand Up @@ -58,6 +59,7 @@ fun EntryProviderScope<HedvigNavKey>.claimChatEntries(
) {
entry<ClaimChatKey> { key ->
ClaimChatDestination(
resumableClaimId = key.resumableClaimId,
isDevelopmentFlow = key.isDevelopmentFlow,
shouldShowRequestPermissionRationale = shouldShowRequestPermissionRationale,
openAppSettings = openAppSettings,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,16 @@ fragment ClaimIntentFragment on ClaimIntent {
id
submittedAt
}
createdAt
previousSteps {
id
text
hint
content {
...ClaimIntentStepContentFragment
}
isRegrettable
}
}

fragment ClaimIntentStepContentFragment on ClaimIntentStepContent {
Expand Down Expand Up @@ -44,6 +54,7 @@ fragment FormFragment on ClaimIntentStepContentForm {
value
}
defaultValues
currentValues
minValue
maxValue
searchData {
Expand All @@ -63,6 +74,7 @@ fragment ContentSelectFragment on ClaimIntentStepContentSelect {
isSkippable
style
defaultSelectedId
currentSelectedId
}

fragment TaskFragment on ClaimIntentStepContentTask {
Expand All @@ -75,11 +87,18 @@ fragment AudioRecordingFragment on ClaimIntentStepContentAudioRecording {
isSkippable
freeTextMinLength
freeTextMaxLength
currentAudioUrl
currentFreeText
}

fragment FileUploadFragment on ClaimIntentStepContentFileUpload {
uploadUri
isSkippable
currentFiles {
url
contentType
fileName
}
}

fragment SummaryFragment on ClaimIntentStepContentSummary {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
query ResumeClaim {
currentMember {
resumableClaimIntent {
...ClaimIntentFragment
}
}
}
Loading
Loading