@@ -6,54 +6,44 @@ import androidx.lifecycle.MutableLiveData
6
6
import androidx.lifecycle.ViewModel
7
7
import androidx.lifecycle.viewModelScope
8
8
import app.lawnchair.data.folder.service.FolderService
9
+ import app.lawnchair.preferences2.ReloadHelper
9
10
import com.android.launcher3.model.data.AppInfo
10
11
import com.android.launcher3.model.data.FolderInfo
11
12
import kotlinx.coroutines.flow.MutableStateFlow
12
13
import kotlinx.coroutines.flow.StateFlow
13
14
import kotlinx.coroutines.flow.asStateFlow
15
+ import kotlinx.coroutines.flow.update
14
16
import kotlinx.coroutines.launch
15
17
import kotlinx.coroutines.sync.Mutex
16
18
import kotlinx.coroutines.sync.withLock
17
19
18
- class FolderViewModel (context : Context ) : ViewModel() {
19
-
20
- private val repository = FolderService .INSTANCE .get(context)
21
-
20
+ class FolderViewModel (
21
+ context : Context ,
22
+ private val repository : FolderService = FolderService .INSTANCE .get(context),
23
+ ) : ViewModel() {
22
24
private val _folders = MutableStateFlow <List <FolderInfo >>(emptyList())
23
25
val folders: StateFlow <List <FolderInfo >> = _folders .asStateFlow()
24
26
25
27
private val _foldersMutable = MutableLiveData <List <FolderInfo >>()
26
28
val foldersMutable: LiveData <List <FolderInfo >> = _foldersMutable
27
29
28
- private val _items = MutableStateFlow <Set <String >>(setOf ())
29
- val items: StateFlow <Set <String >> = _items .asStateFlow()
30
-
31
30
private val _folderInfo = MutableStateFlow <FolderInfo ?>(null )
32
31
val folderInfo = _folderInfo .asStateFlow()
33
32
34
33
private val mutex = Mutex ()
34
+ private val reloadHelper = ReloadHelper (context)
35
35
36
36
init {
37
- viewModelScope.launch {
38
- mutex.withLock {
39
- loadFolders()
40
- }
41
- }
37
+ refreshFolders()
42
38
}
43
39
44
- fun refreshFolders () {
40
+ fun refreshFolders (isReloadGrid : Boolean = false ) {
45
41
viewModelScope.launch {
46
42
mutex.withLock {
47
43
loadFolders()
48
44
}
49
45
}
50
- }
51
-
52
- fun setItems (id : Int ) {
53
- viewModelScope.launch {
54
- val items = repository.getItems(id)
55
- _items .value = items
56
- }
46
+ if (isReloadGrid) reloadHelper.reloadGrid()
57
47
}
58
48
59
49
fun setFolderInfo (folderInfoId : Int , hasId : Boolean ) {
@@ -66,7 +56,7 @@ class FolderViewModel(context: Context) : ViewModel() {
66
56
viewModelScope.launch {
67
57
repository.updateFolderInfo(folderInfo, hide)
68
58
}
69
- refreshFolders()
59
+ refreshFolders(true )
70
60
}
71
61
72
62
fun saveFolder (folderInfo : FolderInfo ) {
@@ -76,22 +66,23 @@ class FolderViewModel(context: Context) : ViewModel() {
76
66
refreshFolders()
77
67
}
78
68
79
- fun deleteFolderInfo (id : Int ) {
69
+ fun updateFolder (id : Int , title : String , appInfo : List < AppInfo > ) {
80
70
viewModelScope.launch {
81
- repository.deleteFolderInfo (id)
71
+ repository.updateFolderWithItems (id, title, appInfo )
82
72
}
83
- refreshFolders()
73
+ refreshFolders(true )
84
74
}
85
75
86
- fun updateFolderWithItems (id : Int , title : String , appInfos : List < AppInfo > ) {
76
+ fun deleteFolder (id : Int ) {
87
77
viewModelScope.launch {
88
- repository.updateFolderWithItems (id, title, appInfos )
78
+ repository.deleteFolderInfo (id)
89
79
}
80
+ refreshFolders(true )
90
81
}
91
82
92
83
private suspend fun loadFolders () {
93
84
val folders = repository.getAllFolders()
94
- _folders .value = folders
85
+ _folders .update { folders }
95
86
_foldersMutable .postValue(folders)
96
87
}
97
88
}
0 commit comments