Skip to content
Merged
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
2 changes: 1 addition & 1 deletion build-logic/build_properties.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ extra.apply {
* Dev version >= 2025.2.0 is required to support enrolment record updates and SimFace configuration
* Dev version >= 2025.3.0 is required to receive smaples and structured down sync configuration
*/
set("VERSION_NAME", "2025.3.0")
set("VERSION_NAME", "2025.4.0")

/**
* Build type. The version code describes which build type was used for the build.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.simprints.face.capture

import androidx.annotation.Keep
import com.simprints.core.ExcludedFromGeneratedTestCoverageReports
import com.simprints.core.domain.step.StepResult
import com.simprints.infra.images.model.SecuredImageRef

Expand All @@ -22,5 +23,29 @@ data class FaceCaptureResult(
val template: ByteArray,
val imageRef: SecuredImageRef?,
val format: String,
) : StepResult
) : StepResult {
@ExcludedFromGeneratedTestCoverageReports("Generated code")
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false

other as Sample

if (faceId != other.faceId) return false
if (!template.contentEquals(other.template)) return false
if (imageRef != other.imageRef) return false
if (format != other.format) return false

return true
}

@ExcludedFromGeneratedTestCoverageReports("Generated code")
override fun hashCode(): Int {
var result = faceId.hashCode()
result = 31 * result + template.contentHashCode()
result = 31 * result + (imageRef?.hashCode() ?: 0)
result = 31 * result + format.hashCode()
return result
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -354,12 +354,14 @@ internal class SyncInfoFragment : Fragment(R.layout.fragment_sync_info) {
moduleCountAdapter.submitList(moduleCountsForAdapter)

// RecyclerView height fix (wrong height may be caused by ConstraintLayout in parent views)
binding.selectedModulesView.post {
val itemHeight = resources.getDimensionPixelSize(R.dimen.module_item_height)
val itemCount = moduleCountsForAdapter.size.coerceAtMost(MAX_MODULE_LIST_HEIGHT_ITEMS)
binding.selectedModulesView.apply {
layoutParams = layoutParams.apply {
height = itemHeight * itemCount
viewLifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
val itemHeight = resources.getDimensionPixelSize(R.dimen.module_item_height)
val itemCount = moduleCountsForAdapter.size.coerceAtMost(MAX_MODULE_LIST_HEIGHT_ITEMS)
binding.selectedModulesView.apply {
layoutParams = layoutParams.apply {
height = itemHeight * itemCount
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.simprints.feature.externalcredential.model

import androidx.annotation.Keep
import com.simprints.core.ExcludedFromGeneratedTestCoverageReports
import com.simprints.core.domain.step.StepResult
import com.simprints.core.domain.tokenization.TokenizableString
import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.FingerprintConfiguration
Expand All @@ -15,6 +16,6 @@ data class CredentialMatch(
val verificationThreshold: Float,
val faceBioSdk: FaceConfiguration.BioSdk?,
val fingerprintBioSdk: FingerprintConfiguration.BioSdk?,
) {
) : StepResult {
val isVerificationSuccessful = matchResult.confidence >= verificationThreshold
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.simprints.feature.externalcredential.screens.search.model
import androidx.annotation.Keep
import com.simprints.core.domain.externalcredential.ExternalCredential
import com.simprints.core.domain.externalcredential.ExternalCredentialType
import com.simprints.core.domain.step.StepResult
import com.simprints.core.domain.tokenization.TokenizableString
import com.simprints.core.tools.time.Timestamp
import com.simprints.core.tools.utils.randomUUID
Expand All @@ -20,7 +21,7 @@ data class ScannedCredential(
val scanStartTime: Timestamp,
val scanEndTime: Timestamp,
val scannedValue: TokenizableString.Raw,
) : Serializable
) : StepResult

fun ScannedCredential.toExternalCredential(subjectId: String) = ExternalCredential(
id = credentialScanId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,14 @@ abstract class StepResultMixin : StepResult
)
abstract class StepParamsMixin : StepParams

/**
* Step contains all of the information required to execute an orchestration step and the result of the execution.
*
* All classes used in the params structure must implement [StepParams] interface and added to [StepParamsMixin].
* All classes used in the result structure must implement [StepResult] interface and added to [StepResultMixin].
*
* Additionally, [StepParams] and [StepResult] subclasses can only have fields of primitives, enums and serializeables classes.
*/
@Keep
internal data class Step(
val id: Int,
Expand Down
Loading