• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.settings.biometrics2.ui.viewmodel
2 
3 import android.app.Application
4 import androidx.lifecycle.AndroidViewModel
5 import kotlinx.atomicfu.AtomicBoolean
6 import kotlinx.atomicfu.atomic
7 import kotlinx.coroutines.flow.MutableSharedFlow
8 import kotlinx.coroutines.flow.SharedFlow
9 import kotlinx.coroutines.flow.asSharedFlow
10 
11 class FingerprintEnrollErrorDialogViewModel(
12     application: Application,
13     val isSuw: Boolean
14 ): AndroidViewModel(application) {
15 
16     private val _isDialogShown: AtomicBoolean = atomic(false)
17     val isDialogShown: Boolean
18         get() = _isDialogShown.value
19 
20     private val _newDialogFlow = MutableSharedFlow<Int>()
21     val newDialogFlow: SharedFlow<Int>
22         get() = _newDialogFlow.asSharedFlow()
23 
24     private val _triggerRetryFlow = MutableSharedFlow<Any>()
25     val triggerRetryFlow: SharedFlow<Any>
26         get() = _triggerRetryFlow.asSharedFlow()
27 
28     private val _setResultFlow = MutableSharedFlow<FingerprintErrorDialogSetResultAction>()
29     val setResultFlow: SharedFlow<FingerprintErrorDialogSetResultAction>
30         get() = _setResultFlow.asSharedFlow()
31 
newDialognull32     suspend fun newDialog(errorMsgId: Int) {
33         _isDialogShown.compareAndSet(expect = false, update = true)
34         _newDialogFlow.emit(errorMsgId)
35     }
36 
triggerRetrynull37     suspend fun triggerRetry() {
38         _isDialogShown.compareAndSet(expect = true, update = false)
39         _triggerRetryFlow.emit(Any())
40     }
41 
setResultAndFinishnull42     suspend fun setResultAndFinish(action: FingerprintErrorDialogSetResultAction) {
43         _isDialogShown.compareAndSet(expect = true, update = false)
44         _setResultFlow.emit(action)
45     }
46 }
47 
48 enum class FingerprintErrorDialogSetResultAction {
49     FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_FINISH,
50     FINGERPRINT_ERROR_DIALOG_ACTION_SET_RESULT_TIMEOUT
51 }
52