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
1 change: 0 additions & 1 deletion .github/workflows/pr-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ jobs:
infra:enrolment-records:room-store
infra:recent-user-activity
infra:config-store
infra:config-sync
infra:credential-store
infra:sync
reportsId: infra1
Expand Down
1 change: 0 additions & 1 deletion face/capture/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ dependencies {
implementation(project(":infra:orchestrator-data"))
implementation(project(":infra:auth-store"))
implementation(project(":infra:config-store"))
implementation(project(":infra:config-sync"))
implementation(project(":infra:enrolment-records:repository"))
implementation(project(":infra:events"))
implementation(project(":infra:images"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.simprints.core.DeviceID
import com.simprints.core.domain.common.Modality
import com.simprints.core.domain.capture.BiometricReferenceCapture
import com.simprints.core.domain.capture.BiometricTemplateCapture
import com.simprints.core.domain.common.Modality
import com.simprints.core.livedata.LiveDataEvent
import com.simprints.core.livedata.LiveDataEventWithContent
import com.simprints.core.livedata.send
Expand All @@ -20,8 +20,8 @@ import com.simprints.face.capture.usecases.ShouldShowInstructionsScreenUseCase
import com.simprints.face.capture.usecases.SimpleCaptureEventReporter
import com.simprints.face.infra.biosdkresolver.ResolveFaceBioSdkUseCase
import com.simprints.infra.authstore.AuthStore
import com.simprints.infra.config.store.ConfigRepository
import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.infra.license.LicenseRepository
import com.simprints.infra.license.LicenseStatus
import com.simprints.infra.license.SaveLicenseCheckEventUseCase
Expand All @@ -47,7 +47,7 @@ import javax.inject.Inject
@HiltViewModel
internal class FaceCaptureViewModel @Inject constructor(
private val authStore: AuthStore,
private val configManager: ConfigManager,
private val configRepository: ConfigRepository,
private val saveFaceImage: SaveFaceSampleUseCase,
private val eventReporter: SimpleCaptureEventReporter,
private val bitmapToByteArray: BitmapToByteArrayUseCase,
Expand Down Expand Up @@ -117,7 +117,7 @@ internal class FaceCaptureViewModel @Inject constructor(
activity,
licenseVendor,
LicenseVersion(
configManager
configRepository
.getProjectConfiguration()
.face
?.rankOne
Expand Down Expand Up @@ -174,7 +174,7 @@ internal class FaceCaptureViewModel @Inject constructor(
fun flowFinished() {
Simber.i("Finishing capture flow", tag = FACE_CAPTURE)
viewModelScope.launch {
val faceConfiguration = configManager.getProjectConfiguration().face?.getSdkConfiguration(bioSDK)
val faceConfiguration = configRepository.getProjectConfiguration().face?.getSdkConfiguration(bioSDK)
if (faceConfiguration?.imageSavingStrategy?.shouldSaveImage() == true) {
saveFaceDetections()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ import com.simprints.face.capture.usecases.SimpleCaptureEventReporter
import com.simprints.face.infra.basebiosdk.detection.Face
import com.simprints.face.infra.basebiosdk.detection.FaceDetector
import com.simprints.face.infra.biosdkresolver.ResolveFaceBioSdkUseCase
import com.simprints.infra.config.store.ConfigRepository
import com.simprints.infra.config.store.models.ExperimentalProjectConfiguration.Companion.FACE_AUTO_CAPTURE_IMAGING_DURATION_MILLIS_DEFAULT
import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.experimental
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.infra.logging.LoggingConstants.CrashReportTag.FACE_CAPTURE
import com.simprints.infra.logging.Simber
import dagger.hilt.android.lifecycle.HiltViewModel
Expand All @@ -33,7 +33,7 @@ import javax.inject.Inject
@HiltViewModel
internal class LiveFeedbackFragmentViewModel @Inject constructor(
private val resolveFaceBioSdk: ResolveFaceBioSdkUseCase,
private val configManager: ConfigManager,
private val configRepository: ConfigRepository,
private val eventReporter: SimpleCaptureEventReporter,
private val timeHelper: TimeHelper,
private val isUsingAutoCaptureUseCase: IsUsingAutoCaptureUseCase,
Expand Down Expand Up @@ -68,7 +68,7 @@ internal class LiveFeedbackFragmentViewModel @Inject constructor(
private lateinit var faceDetector: FaceDetector

suspend fun initAutoCapture() {
val config = configManager.getProjectConfiguration()
val config = configRepository.getProjectConfiguration()
isAutoCapture = isUsingAutoCaptureUseCase(config)
}

Expand All @@ -83,7 +83,7 @@ internal class LiveFeedbackFragmentViewModel @Inject constructor(
viewModelScope.launch {
faceDetector = resolveFaceBioSdk(bioSdk).detector

val config = configManager.getProjectConfiguration()
val config = configRepository.getProjectConfiguration()
qualityThreshold = config.face?.getSdkConfiguration(bioSdk)?.qualityThreshold ?: 0f
singleQualityFallbackCaptureRequired = config.experimental().singleQualityFallbackRequired
autoCaptureImagingDurationMillis = config.experimental().faceAutoCaptureImagingDurationMillis
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,14 @@ import com.google.common.truth.Truth.*
import com.simprints.core.tools.time.Timestamp
import com.simprints.face.capture.models.FaceDetection
import com.simprints.face.capture.usecases.BitmapToByteArrayUseCase
import com.simprints.face.capture.usecases.IsUsingAutoCaptureUseCase
import com.simprints.face.capture.usecases.SaveFaceSampleUseCase
import com.simprints.face.capture.usecases.ShouldShowInstructionsScreenUseCase
import com.simprints.face.capture.usecases.SimpleCaptureEventReporter
import com.simprints.face.infra.basebiosdk.initialization.FaceBioSdkInitializer
import com.simprints.infra.authstore.AuthStore
import com.simprints.infra.config.store.ConfigRepository
import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.FaceConfiguration.ImageSavingStrategy
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.infra.license.LicenseRepository
import com.simprints.infra.license.LicenseStatus
import com.simprints.infra.license.SaveLicenseCheckEventUseCase
Expand Down Expand Up @@ -44,7 +43,7 @@ class FaceCaptureViewModelTest {
private lateinit var authStore: AuthStore

@MockK
private lateinit var configManager: ConfigManager
private lateinit var configRepository: ConfigRepository

@MockK
private lateinit var faceImageUseCase: SaveFaceSampleUseCase
Expand Down Expand Up @@ -85,7 +84,7 @@ class FaceCaptureViewModelTest {

viewModel = FaceCaptureViewModel(
authStore,
configManager,
configRepository,
faceImageUseCase,
eventReporter,
bitmapToByteArrayUseCase,
Expand All @@ -102,7 +101,7 @@ class FaceCaptureViewModelTest {
@Test
fun `Save face detections should not be called when image saving strategy set to NEVER`() {
coEvery {
configManager
configRepository
.getProjectConfiguration()
.face
?.getSdkConfiguration(any())
Expand All @@ -117,7 +116,7 @@ class FaceCaptureViewModelTest {
@Test
fun `Save face detections should be called when image saving strategy set to ONLY_GOOD_SCAN`() {
coEvery {
configManager
configRepository
.getProjectConfiguration()
.face
?.getSdkConfiguration(any())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ import com.simprints.face.capture.usecases.SimpleCaptureEventReporter
import com.simprints.face.infra.basebiosdk.detection.Face
import com.simprints.face.infra.basebiosdk.detection.FaceDetector
import com.simprints.face.infra.biosdkresolver.ResolveFaceBioSdkUseCase
import com.simprints.infra.config.store.ConfigRepository
import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.experimental
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.testtools.common.coroutines.TestCoroutineRule
import com.simprints.testtools.common.livedata.testObserver
import io.mockk.*
Expand Down Expand Up @@ -48,7 +48,7 @@ internal class LiveFeedbackAutoCaptureFragmentViewModelTest {
lateinit var previewFrame: Bitmap

@MockK
lateinit var configManager: ConfigManager
lateinit var configRepository: ConfigRepository

@MockK
lateinit var eventReporter: SimpleCaptureEventReporter
Expand All @@ -66,15 +66,15 @@ internal class LiveFeedbackAutoCaptureFragmentViewModelTest {
MockKAnnotations.init(this, relaxed = true)

coEvery {
configManager
configRepository
.getProjectConfiguration()
.face
?.getSdkConfiguration(any())
?.qualityThreshold
} returns QUALITY_THRESHOLD
every { isUsingAutoCapture.invoke(any()) } returns true
coEvery {
configManager.getProjectConfiguration().experimental().singleQualityFallbackRequired
configRepository.getProjectConfiguration().experimental().singleQualityFallbackRequired
} returns false
every { timeHelper.now() } returnsMany (0..100L).map { Timestamp(it) }
justRun { previewFrame.recycle() }
Expand All @@ -86,7 +86,7 @@ internal class LiveFeedbackAutoCaptureFragmentViewModelTest {

viewModel = LiveFeedbackFragmentViewModel(
resolveFaceBioSdkUseCase,
configManager,
configRepository,
eventReporter,
timeHelper,
isUsingAutoCapture,
Expand Down Expand Up @@ -294,7 +294,7 @@ internal class LiveFeedbackAutoCaptureFragmentViewModelTest {
val badQuality: Face = getFace(quality = -2f)

coEvery {
configManager.getProjectConfiguration().experimental().singleQualityFallbackRequired
configRepository.getProjectConfiguration().experimental().singleQualityFallbackRequired
} returns true

every { faceDetector.analyze(frame) } returnsMany listOf(
Expand Down Expand Up @@ -325,7 +325,7 @@ internal class LiveFeedbackAutoCaptureFragmentViewModelTest {
fun `Use default imaging duration when not configured`() = runTest {
coEvery { faceDetector.analyze(frame) } returns getFace()
coEvery {
configManager
configRepository
.getProjectConfiguration()
.experimental()
.faceAutoCaptureImagingDurationMillis
Expand All @@ -352,7 +352,7 @@ internal class LiveFeedbackAutoCaptureFragmentViewModelTest {
val configDuration = 5000L
coEvery { faceDetector.analyze(frame) } returns getFace()
coEvery {
configManager
configRepository
.getProjectConfiguration()
.experimental()
.faceAutoCaptureImagingDurationMillis
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ import com.simprints.face.capture.usecases.SimpleCaptureEventReporter
import com.simprints.face.infra.basebiosdk.detection.Face
import com.simprints.face.infra.basebiosdk.detection.FaceDetector
import com.simprints.face.infra.biosdkresolver.ResolveFaceBioSdkUseCase
import com.simprints.infra.config.store.ConfigRepository
import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.experimental
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.testtools.common.coroutines.TestCoroutineRule
import com.simprints.testtools.common.livedata.testObserver
import io.mockk.*
Expand Down Expand Up @@ -45,7 +45,7 @@ internal class LiveFeedbackFragmentViewModelTest {
lateinit var previewFrame: Bitmap

@MockK
lateinit var configManager: ConfigManager
lateinit var configRepository: ConfigRepository

@MockK
lateinit var eventReporter: SimpleCaptureEventReporter
Expand All @@ -62,14 +62,14 @@ internal class LiveFeedbackFragmentViewModelTest {
MockKAnnotations.init(this, relaxed = true)

coEvery {
configManager
configRepository
.getProjectConfiguration()
.face
?.getSdkConfiguration(any())
?.qualityThreshold
} returns QUALITY_THRESHOLD
every { isUsingAutoCapture.invoke(any()) } returns false
coEvery { configManager.getProjectConfiguration().experimental().singleQualityFallbackRequired } returns false
coEvery { configRepository.getProjectConfiguration().experimental().singleQualityFallbackRequired } returns false
every { timeHelper.now() } returnsMany (0..100L).map { Timestamp(it) }
justRun { previewFrame.recycle() }
val resolveFaceBioSdkUseCase = mockk<ResolveFaceBioSdkUseCase> {
Expand All @@ -80,7 +80,7 @@ internal class LiveFeedbackFragmentViewModelTest {

viewModel = LiveFeedbackFragmentViewModel(
resolveFaceBioSdkUseCase,
configManager,
configRepository,
eventReporter,
timeHelper,
isUsingAutoCapture,
Expand Down Expand Up @@ -163,7 +163,7 @@ internal class LiveFeedbackFragmentViewModelTest {
val validFace: Face = getFace()
val badQuality: Face = getFace(quality = -2f)

coEvery { configManager.getProjectConfiguration().experimental().singleQualityFallbackRequired } returns true
coEvery { configRepository.getProjectConfiguration().experimental().singleQualityFallbackRequired } returns true

every { faceDetector.analyze(frame) } returnsMany listOf(
badQuality,
Expand Down
1 change: 0 additions & 1 deletion feature/client-api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ android {
dependencies {

implementation(project(":infra:config-store"))
implementation(project(":infra:config-sync"))
implementation(project(":infra:events"))
implementation(project(":infra:enrolment-records:repository"))
implementation(project(":infra:orchestrator-data"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ import com.simprints.feature.clientapi.usecases.GetCurrentSessionIdUseCase
import com.simprints.feature.clientapi.usecases.GetEnrolmentCreationEventForRecordUseCase
import com.simprints.feature.clientapi.usecases.IsFlowCompletedWithErrorUseCase
import com.simprints.feature.clientapi.usecases.SimpleEventReporter
import com.simprints.infra.config.store.ConfigRepository
import com.simprints.infra.config.store.models.Project
import com.simprints.infra.config.store.models.TokenKeyType
import com.simprints.infra.config.store.tokenization.TokenizationProcessor
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.infra.logging.LoggingConstants.CrashReportTag.ORCHESTRATION
import com.simprints.infra.logging.Simber
import com.simprints.infra.orchestration.data.ActionRequest
Expand Down Expand Up @@ -54,7 +54,7 @@ class ClientApiViewModel @Inject internal constructor(
private val getEnrolmentCreationEventForRecord: GetEnrolmentCreationEventForRecordUseCase,
private val deleteSessionEventsIfNeeded: DeleteSessionEventsIfNeededUseCase,
private val isFlowCompletedWithError: IsFlowCompletedWithErrorUseCase,
private val configManager: ConfigManager,
private val configRepository: ConfigRepository,
private val timeHelper: TimeHelper,
private val persistentLogger: PersistentLogger,
private val tokenizationProcessor: TokenizationProcessor,
Expand All @@ -71,7 +71,7 @@ class ClientApiViewModel @Inject internal constructor(
get() = _showAlert
private val _showAlert = MutableLiveData<LiveDataEventWithContent<ClientApiError>>()

private suspend fun getProject() = runCatching { configManager.getProject() }.getOrNull()
private suspend fun getProject() = runCatching { configRepository.getProject() }.getOrNull()

suspend fun handleIntent(
action: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ import com.simprints.feature.clientapi.models.CommCareConstants
import com.simprints.feature.clientapi.models.LibSimprintsConstants
import com.simprints.feature.clientapi.models.OdkConstants
import com.simprints.feature.clientapi.usecases.GetCurrentSessionIdUseCase
import com.simprints.infra.config.store.ConfigRepository
import com.simprints.infra.config.store.models.Project
import com.simprints.infra.config.store.tokenization.TokenizationProcessor
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.infra.events.EventRepository
import com.simprints.infra.orchestration.data.ActionConstants
import com.simprints.infra.orchestration.data.ActionRequest
Expand All @@ -41,7 +41,7 @@ internal class IntentToActionMapper @Inject constructor(
private val tokenizationProcessor: TokenizationProcessor,
private val timeHelper: TimeHelper,
private val eventRepository: EventRepository,
private val configManager: ConfigManager,
private val configRepository: ConfigRepository,
) {
suspend operator fun invoke(
action: String,
Expand Down Expand Up @@ -264,7 +264,7 @@ internal class IntentToActionMapper @Inject constructor(
extractor = extractor,
currentSessionId = getCurrentSessionId(),
eventRepository = eventRepository,
configManager = configManager,
configRepository = configRepository,
),
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package com.simprints.feature.clientapi.mappers.request.validators
import com.simprints.feature.clientapi.exceptions.InvalidRequestException
import com.simprints.feature.clientapi.mappers.request.extractors.ConfirmIdentityRequestExtractor
import com.simprints.feature.clientapi.models.ClientApiError
import com.simprints.infra.config.store.ConfigRepository
import com.simprints.infra.config.store.models.experimental
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.infra.events.EventRepository
import com.simprints.infra.events.event.domain.models.callback.IdentificationCallbackEvent
import com.simprints.infra.logging.LoggingConstants.CrashReportTag.SESSION
Expand All @@ -14,7 +14,7 @@ internal class ConfirmIdentityValidator(
private val extractor: ConfirmIdentityRequestExtractor,
private val currentSessionId: String,
private val eventRepository: EventRepository,
private val configManager: ConfigManager,
private val configRepository: ConfigRepository,
) : RequestActionValidator(extractor) {
private var identificationEvent: IdentificationCallbackEvent? = null

Expand Down Expand Up @@ -60,7 +60,7 @@ internal class ConfirmIdentityValidator(
}

// Skip further validation if skip flag is enabled
if (configManager.getProjectConfiguration().experimental().allowConfirmingGuidsNotInCallback) {
if (configRepository.getProjectConfiguration().experimental().allowConfirmingGuidsNotInCallback) {
return
}

Expand Down
Loading