1
1
package com.example.wordbook.main
2
2
3
3
import android.app.Application
4
- import android.util.Log
5
4
import androidx.lifecycle.*
6
5
import com.example.wordbook.database.getDatabase
7
6
import com.example.wordbook.repository.WordRepository
8
7
import kotlinx.coroutines.async
8
+ import kotlinx.coroutines.launch
9
+
10
+
11
+ enum class MovingState {
12
+ IDLE , MOVE , FAIL
13
+ }
9
14
10
15
class MainViewModel (application : Application ): AndroidViewModel(application) {
11
16
companion object {
@@ -14,57 +19,51 @@ class MainViewModel(application: Application): AndroidViewModel(application) {
14
19
}
15
20
private val repository = WordRepository (getDatabase(application))
16
21
17
- private val _mMoveToStudy = MutableLiveData <Boolean >(false )
18
- val mMoveToStudy: LiveData <Boolean >
19
- get() = _mMoveToStudy
20
-
21
- private val _mMoveToTest = MutableLiveData <Boolean >(false )
22
- val mMoveToTest: LiveData <Boolean >
23
- get() = _mMoveToTest
22
+ private val _mStudyMovingState = MutableLiveData <MovingState >(MovingState .IDLE )
23
+ val mStudyMovingState: LiveData <MovingState >
24
+ get() = _mStudyMovingState
24
25
25
- private val _mMoveToVocaList = MutableLiveData <Boolean >( false )
26
- val mMoveToVocaList : LiveData <Boolean >
27
- get() = _mMoveToVocaList
26
+ private val _mTestMovingState = MutableLiveData <MovingState >( MovingState . IDLE )
27
+ val mTestMovingState : LiveData <MovingState >
28
+ get() = _mTestMovingState
28
29
29
30
fun moveToStudy () {
30
- _mMoveToStudy .value = true
31
+ viewModelScope.launch {
32
+ if (moveToStudyEnabled()) {
33
+ _mStudyMovingState .value = MovingState .MOVE
34
+ } else {
35
+ _mStudyMovingState .value = MovingState .FAIL
36
+ }
37
+ }
31
38
}
32
39
33
- fun moveToStudyDone () {
34
- _mMoveToStudy .value = false
40
+ fun setStudyMovingStateIdle () {
41
+ _mStudyMovingState .value = MovingState . IDLE
35
42
}
36
43
37
44
fun moveToTest () {
38
- _mMoveToTest .value = true
39
- }
40
-
41
- fun moveToTestDone () {
42
- _mMoveToTest .value = false
45
+ viewModelScope.launch {
46
+ if (moveToTestEnabled()) {
47
+ _mTestMovingState .value = MovingState .MOVE
48
+ } else {
49
+ _mTestMovingState .value = MovingState .FAIL
50
+ }
51
+ }
43
52
}
44
53
45
- fun moveToVocaList () {
46
- _mMoveToVocaList .value = true
54
+ fun setTestMovingStateIdle () {
55
+ _mTestMovingState .value = MovingState . IDLE
47
56
}
48
57
49
- fun moveToVocaListDone () {
50
- _mMoveToVocaList .value = false
51
- }
52
-
53
- suspend fun moveToStudyEnabled (): Boolean {
58
+ private suspend fun moveToStudyEnabled (): Boolean {
54
59
return viewModelScope.async {
55
60
repository.getCounts() >= LIMIT_TO_MOVE_STUDY
56
61
}.await()
57
62
}
58
63
59
- suspend fun moveToTestEnabled (): Boolean {
64
+ private suspend fun moveToTestEnabled (): Boolean {
60
65
return viewModelScope.async {
61
66
repository.getCounts() >= LIMIT_TO_MOVE_TEST
62
67
}.await()
63
68
}
64
-
65
- override fun onCleared () {
66
- super .onCleared()
67
-
68
- Log .d(" Yebon" , " onClear main" )
69
- }
70
69
}
0 commit comments