• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.systemui.keyguard.domain.interactor
2 
3 import com.android.systemui.dagger.SysUISingleton
4 import com.android.systemui.keyguard.data.repository.KeyguardRepository
5 import com.android.systemui.keyguard.shared.model.BiometricUnlockMode
6 import com.android.systemui.keyguard.shared.model.BiometricUnlockModel
7 import com.android.systemui.keyguard.shared.model.BiometricUnlockSource
8 import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_DISMISS_BOUNCER
9 import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_NONE
10 import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_ONLY_WAKE
11 import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_SHOW_BOUNCER
12 import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_UNLOCK_COLLAPSING
13 import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK
14 import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK_FROM_DREAM
15 import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK_PULSING
16 import com.android.systemui.statusbar.phone.BiometricUnlockController.WakeAndUnlockMode
17 import javax.inject.Inject
18 import kotlinx.coroutines.flow.StateFlow
19 
20 @SysUISingleton
21 class BiometricUnlockInteractor
22 @Inject
23 constructor(
24     private val keyguardRepository: KeyguardRepository,
25 ) {
26 
27     val unlockState: StateFlow<BiometricUnlockModel> = keyguardRepository.biometricUnlockState
28 
setBiometricUnlockStatenull29     fun setBiometricUnlockState(
30         @WakeAndUnlockMode unlockStateInt: Int,
31         biometricUnlockSource: BiometricUnlockSource?,
32     ) {
33         val state = biometricModeIntToObject(unlockStateInt)
34         keyguardRepository.setBiometricUnlockState(state, biometricUnlockSource)
35     }
36 
biometricModeIntToObjectnull37     private fun biometricModeIntToObject(@WakeAndUnlockMode value: Int): BiometricUnlockMode {
38         return when (value) {
39             MODE_NONE -> BiometricUnlockMode.NONE
40             MODE_WAKE_AND_UNLOCK -> BiometricUnlockMode.WAKE_AND_UNLOCK
41             MODE_WAKE_AND_UNLOCK_PULSING -> BiometricUnlockMode.WAKE_AND_UNLOCK_PULSING
42             MODE_SHOW_BOUNCER -> BiometricUnlockMode.SHOW_BOUNCER
43             MODE_ONLY_WAKE -> BiometricUnlockMode.ONLY_WAKE
44             MODE_UNLOCK_COLLAPSING -> BiometricUnlockMode.UNLOCK_COLLAPSING
45             MODE_WAKE_AND_UNLOCK_FROM_DREAM -> BiometricUnlockMode.WAKE_AND_UNLOCK_FROM_DREAM
46             MODE_DISMISS_BOUNCER -> BiometricUnlockMode.DISMISS_BOUNCER
47             else -> throw IllegalArgumentException("Invalid BiometricUnlockModel value: $value")
48         }
49     }
50 }
51