From 2a59de166b591b516050f3aa267ddccc9a51a4d2 Mon Sep 17 00:00:00 2001 From: SuLG-k Date: Thu, 14 Mar 2024 17:41:39 +0700 Subject: [PATCH] fix PeekabooCameraState recreation when lambda onCapture does not memoized --- .../peekaboo/ui/camera/PeekabooCameraState.android.kt | 7 ++++--- .../preat/peekaboo/ui/camera/PeekabooCameraState.ios.kt | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/peekaboo-ui/src/androidMain/kotlin/com/preat/peekaboo/ui/camera/PeekabooCameraState.android.kt b/peekaboo-ui/src/androidMain/kotlin/com/preat/peekaboo/ui/camera/PeekabooCameraState.android.kt index 6d8d8c0..64d97ab 100644 --- a/peekaboo-ui/src/androidMain/kotlin/com/preat/peekaboo/ui/camera/PeekabooCameraState.android.kt +++ b/peekaboo-ui/src/androidMain/kotlin/com/preat/peekaboo/ui/camera/PeekabooCameraState.android.kt @@ -26,7 +26,7 @@ import androidx.compose.runtime.setValue @Stable actual class PeekabooCameraState( cameraMode: CameraMode, - private val onCapture: (ByteArray?) -> Unit, + internal var onCapture: (ByteArray?) -> Unit, ) { actual var isCameraReady: Boolean by mutableStateOf(false) @@ -80,7 +80,8 @@ actual fun rememberPeekabooCameraState( onCapture: (ByteArray?) -> Unit, ): PeekabooCameraState { return rememberSaveable( - onCapture, saver = PeekabooCameraState.saver(onCapture), - ) { PeekabooCameraState(initialCameraMode, onCapture) } + ) { PeekabooCameraState(initialCameraMode, onCapture) }.apply { + this.onCapture = onCapture + } } diff --git a/peekaboo-ui/src/iosMain/kotlin/com/preat/peekaboo/ui/camera/PeekabooCameraState.ios.kt b/peekaboo-ui/src/iosMain/kotlin/com/preat/peekaboo/ui/camera/PeekabooCameraState.ios.kt index 4449afc..08b5b60 100644 --- a/peekaboo-ui/src/iosMain/kotlin/com/preat/peekaboo/ui/camera/PeekabooCameraState.ios.kt +++ b/peekaboo-ui/src/iosMain/kotlin/com/preat/peekaboo/ui/camera/PeekabooCameraState.ios.kt @@ -26,7 +26,7 @@ import androidx.compose.runtime.setValue @Stable actual class PeekabooCameraState( cameraMode: CameraMode, - private val onCapture: (ByteArray?) -> Unit, + internal var onCapture: (ByteArray?) -> Unit, ) { actual var isCameraReady: Boolean by mutableStateOf(false) @@ -80,7 +80,8 @@ actual fun rememberPeekabooCameraState( onCapture: (ByteArray?) -> Unit, ): PeekabooCameraState { return rememberSaveable( - onCapture, saver = PeekabooCameraState.saver(onCapture), - ) { PeekabooCameraState(initialCameraMode, onCapture) } + ) { PeekabooCameraState(initialCameraMode, onCapture) }.apply { + this.onCapture = onCapture + } }