11package com.getcode.view.main.account
22
33import android.annotation.SuppressLint
4+ import androidx.lifecycle.viewModelScope
45import com.getcode.media.MediaScanner
56import com.getcode.manager.MnemonicManager
67import com.getcode.navigation.core.CodeNavigator
@@ -10,7 +11,11 @@ import dagger.hilt.android.lifecycle.HiltViewModel
1011import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
1112import io.reactivex.rxjava3.core.Completable
1213import io.reactivex.rxjava3.schedulers.Schedulers
14+ import kotlinx.coroutines.delay
15+ import kotlinx.coroutines.flow.update
16+ import kotlinx.coroutines.launch
1317import javax.inject.Inject
18+ import kotlin.time.Duration.Companion.seconds
1419
1520
1621@HiltViewModel
@@ -20,23 +25,36 @@ class AccountAccessKeyViewModel @Inject constructor(
2025 mediaScanner : MediaScanner ,
2126) : BaseAccessKeyViewModel(resources, mnemonicManager, mediaScanner) {
2227 @SuppressLint(" CheckResult" )
23- fun onSubmit (navigator : CodeNavigator ) {
28+ fun onSubmit () {
2429 Completable .create {
2530 val result = saveBitmapToFile()
2631 if (result) it.onComplete() else it.onError(IllegalStateException ())
2732 }
2833 .observeOn(AndroidSchedulers .mainThread())
2934 .subscribeOn(Schedulers .computation())
3035 .doOnSubscribe {
31- uiFlow.value = uiFlow.value.copy(isLoading = true , isEnabled = false )
36+ uiFlow.update {
37+ it.copy(isLoading = true , isEnabled = false )
38+ }
3239 }
3340 .doOnComplete {
34- uiFlow.value =
35- uiFlow.value.copy(isLoading = false , isEnabled = false , isSuccess = true )
41+ viewModelScope.launch {
42+ uiFlow.update {
43+ it.copy(isLoading = false , isEnabled = false , isSuccess = true )
44+ }
45+ // wait 2s and reset button state
46+ delay(2 .seconds)
47+
48+ uiFlow.update {
49+ it.copy(isSuccess = false , isEnabled = true )
50+ }
51+
52+ }
3653 }
3754 .doOnError {
38- uiFlow.value =
39- uiFlow.value.copy(isLoading = false , isEnabled = true , isSuccess = false )
55+ uiFlow.update {
56+ it.copy(isLoading = false , isEnabled = true , isSuccess = false )
57+ }
4058 }
4159 .subscribe({}, ::onSubmitError)
4260 }
0 commit comments