diff --git a/app/src/main/java/pl/firmatpp/kierowca/data/PhotoUploadMetadata.kt b/app/src/main/java/pl/firmatpp/kierowca/data/PhotoUploadMetadata.kt index 51d3a41..54eb334 100644 --- a/app/src/main/java/pl/firmatpp/kierowca/data/PhotoUploadMetadata.kt +++ b/app/src/main/java/pl/firmatpp/kierowca/data/PhotoUploadMetadata.kt @@ -1,5 +1,6 @@ package pl.firmatpp.kierowca.data +import java.io.Serializable import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.RequestBody import okhttp3.RequestBody.Companion.toRequestBody @@ -9,7 +10,7 @@ data class PhotoUploadMetadata( val latitude: Double? = null, val longitude: Double? = null, val locationAccuracyMeters: Double? = null, -) +) : Serializable fun PhotoUploadMetadata.toMultipartTextParts(): Map = buildMap { takenAt?.let { put("takenAt", it.toPlainTextBody()) } diff --git a/app/src/main/java/pl/firmatpp/kierowca/ui/DriverApp.kt b/app/src/main/java/pl/firmatpp/kierowca/ui/DriverApp.kt index dab2d3d..6e47275 100644 --- a/app/src/main/java/pl/firmatpp/kierowca/ui/DriverApp.kt +++ b/app/src/main/java/pl/firmatpp/kierowca/ui/DriverApp.kt @@ -115,6 +115,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.snapshotFlow import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment @@ -4462,16 +4463,16 @@ private fun RouteStageScreen( ) { val context = LocalContext.current val coroutineScope = rememberCoroutineScope() - var cameraUri by remember { mutableStateOf(null) } - var pendingCameraMode by remember { mutableStateOf(null) } - var showMultiplePhotoCamera by remember(stage) { mutableStateOf(false) } - var multiplePhotoLocationMetadata by remember(stage) { mutableStateOf(PhotoUploadMetadata()) } - var showPreciseLocationPermissionDialog by remember { mutableStateOf(false) } + var cameraUri by rememberSaveable(stage) { mutableStateOf(null) } + var pendingCameraMode by rememberSaveable(stage) { mutableStateOf(null) } + var showMultiplePhotoCamera by rememberSaveable(stage) { mutableStateOf(false) } + var multiplePhotoLocationMetadata by rememberSaveable(stage) { mutableStateOf(PhotoUploadMetadata()) } + var showPreciseLocationPermissionDialog by rememberSaveable(stage) { mutableStateOf(false) } var voiceDictationActive by remember(stage) { mutableStateOf(false) } - var cameraAttachmentTarget by remember(stage) { mutableStateOf(null) } - var pickerAttachmentTarget by remember(stage) { mutableStateOf(null) } - var singlePhotoLocationMetadata by remember(stage) { mutableStateOf(PhotoUploadMetadata()) } - var singlePhotoMetadataGeneration by remember(stage) { mutableStateOf(0L) } + var cameraAttachmentTarget by rememberSaveable(stage) { mutableStateOf(null) } + var pickerAttachmentTarget by rememberSaveable(stage) { mutableStateOf(null) } + var singlePhotoLocationMetadata by rememberSaveable(stage) { mutableStateOf(PhotoUploadMetadata()) } + var singlePhotoMetadataGeneration by rememberSaveable(stage) { mutableStateOf(0L) } val route = state.displaySelectedRoute val stagePhotos = route?.photos?.let { routePhotosForStage(it, stage) }.orEmpty() val stageUploads = state.photoUploads.filter { normalizedRoutePhotoStage(it.stage) == stage } @@ -4858,7 +4859,7 @@ private fun RouteStageScreen( private data class RouteWorkflowAttachmentTarget( val stepId: String, val documentId: String, -) +) : java.io.Serializable @Composable private fun RouteWorkflowStepsCard( diff --git a/app/src/main/java/pl/firmatpp/kierowca/ui/MultiplePhotoCameraScreen.kt b/app/src/main/java/pl/firmatpp/kierowca/ui/MultiplePhotoCameraScreen.kt index 7f5802d..f55b808 100644 --- a/app/src/main/java/pl/firmatpp/kierowca/ui/MultiplePhotoCameraScreen.kt +++ b/app/src/main/java/pl/firmatpp/kierowca/ui/MultiplePhotoCameraScreen.kt @@ -43,6 +43,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -74,7 +75,7 @@ internal fun MultiplePhotoCameraScreen( imageCaptureMode = ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY } } - var capturedCount by remember { mutableIntStateOf(0) } + var capturedCount by rememberSaveable(stage) { mutableIntStateOf(0) } var pendingUploads by remember { mutableIntStateOf(0) } var isCapturing by remember { mutableStateOf(false) } var cameraUnavailable by remember { mutableStateOf(false) }