From 8f75e64bcfaa1aa65c1501a51f2580d9ff729713 Mon Sep 17 00:00:00 2001 From: Martin Date: Tue, 17 Feb 2026 12:57:38 +0100 Subject: [PATCH 1/2] added legacy contract to work with old android implementation --- gradle/libs.versions.toml | 2 +- .../contract/legacy/CameraScanContract.kt | 36 +++++++++++++++++++ .../camera/ui/CameraScanActivity.kt | 4 +++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 scan-engine/src/androidMain/kotlin/de/tillhub/scanengine/camera/contract/legacy/CameraScanContract.kt diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9246e0f..b33483c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -scan-engine = "2.0.1" +scan-engine = "2.0.2" kotlin = "2.2.0" agp = "8.11.1" compose = "1.8.1" diff --git a/scan-engine/src/androidMain/kotlin/de/tillhub/scanengine/camera/contract/legacy/CameraScanContract.kt b/scan-engine/src/androidMain/kotlin/de/tillhub/scanengine/camera/contract/legacy/CameraScanContract.kt new file mode 100644 index 0000000..7cc5d52 --- /dev/null +++ b/scan-engine/src/androidMain/kotlin/de/tillhub/scanengine/camera/contract/legacy/CameraScanContract.kt @@ -0,0 +1,36 @@ +package de.tillhub.scanengine.camera.contract.legacy + +import android.app.Activity +import android.content.Context +import android.content.Intent +import androidx.activity.result.contract.ActivityResultContract +import de.tillhub.scanengine.camera.ui.CameraScanActivity +import de.tillhub.scanengine.data.ScannerEvent + +class CameraScanContract : ActivityResultContract() { + override fun createIntent( + context: Context, + input: String? + ): Intent = Intent(context, CameraScanActivity::class.java).apply { + input?.let { + putExtra(CameraScanActivity.SCAN_KEY, it) + } + } + + override fun parseResult( + resultCode: Int, + intent: Intent? + ): ScannerEvent { + val resultData = intent?.extras?.getString(CameraScanActivity.DATA_KEY) + val scanKey = intent?.extras?.getString(CameraScanActivity.SCAN_KEY) + + return if (resultCode == Activity.RESULT_OK && !resultData.isNullOrEmpty()) { + ScannerEvent.ScanResult( + value = resultData, + scanKey = scanKey, + ) + } else { + ScannerEvent.Camera.Canceled + } + } +} \ No newline at end of file diff --git a/scan-engine/src/androidMain/kotlin/de/tillhub/scanengine/camera/ui/CameraScanActivity.kt b/scan-engine/src/androidMain/kotlin/de/tillhub/scanengine/camera/ui/CameraScanActivity.kt index 4ba4e24..6426ace 100644 --- a/scan-engine/src/androidMain/kotlin/de/tillhub/scanengine/camera/ui/CameraScanActivity.kt +++ b/scan-engine/src/androidMain/kotlin/de/tillhub/scanengine/camera/ui/CameraScanActivity.kt @@ -14,6 +14,9 @@ class CameraScanActivity : ComponentActivity() { val resultIntent = Intent().apply { putExtra(DATA_KEY, barcode) + intent.getStringExtra(SCAN_KEY)?.let { + putExtra(SCAN_KEY, barcode) + } } setResult(RESULT_OK, resultIntent) finish() @@ -28,5 +31,6 @@ class CameraScanActivity : ComponentActivity() { companion object { const val DATA_KEY = "scanned_data" + const val SCAN_KEY = "scan_key" } } From 68f58583a569c9dd8e1fb533f3570c12cdef2b6b Mon Sep 17 00:00:00 2001 From: Martin Date: Tue, 17 Feb 2026 13:07:12 +0100 Subject: [PATCH 2/2] spotless apply --- .../scanengine/camera/contract/legacy/CameraScanContract.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scan-engine/src/androidMain/kotlin/de/tillhub/scanengine/camera/contract/legacy/CameraScanContract.kt b/scan-engine/src/androidMain/kotlin/de/tillhub/scanengine/camera/contract/legacy/CameraScanContract.kt index 7cc5d52..b644035 100644 --- a/scan-engine/src/androidMain/kotlin/de/tillhub/scanengine/camera/contract/legacy/CameraScanContract.kt +++ b/scan-engine/src/androidMain/kotlin/de/tillhub/scanengine/camera/contract/legacy/CameraScanContract.kt @@ -10,7 +10,7 @@ import de.tillhub.scanengine.data.ScannerEvent class CameraScanContract : ActivityResultContract() { override fun createIntent( context: Context, - input: String? + input: String?, ): Intent = Intent(context, CameraScanActivity::class.java).apply { input?.let { putExtra(CameraScanActivity.SCAN_KEY, it) @@ -19,7 +19,7 @@ class CameraScanContract : ActivityResultContract() { override fun parseResult( resultCode: Int, - intent: Intent? + intent: Intent?, ): ScannerEvent { val resultData = intent?.extras?.getString(CameraScanActivity.DATA_KEY) val scanKey = intent?.extras?.getString(CameraScanActivity.SCAN_KEY) @@ -33,4 +33,4 @@ class CameraScanContract : ActivityResultContract() { ScannerEvent.Camera.Canceled } } -} \ No newline at end of file +}