@@ -27,6 +27,8 @@ import androidx.fragment.app.Fragment
27
27
import androidx.fragment.app.activityViewModels
28
28
import androidx.fragment.app.viewModels
29
29
import androidx.lifecycle.Lifecycle.State
30
+ import androidx.lifecycle.asFlow
31
+ import androidx.lifecycle.asLiveData
30
32
import androidx.lifecycle.lifecycleScope
31
33
import androidx.lifecycle.repeatOnLifecycle
32
34
import com.infomaniak.lib.bugtracker.BugTrackerActivity
@@ -59,6 +61,9 @@ import com.infomaniak.mail.utils.extensions.bindAlertToViewLifecycle
59
61
import com.infomaniak.mail.utils.extensions.launchSyncAutoConfigActivityForResult
60
62
import com.infomaniak.mail.utils.extensions.observeNotNull
61
63
import dagger.hilt.android.AndroidEntryPoint
64
+ import kotlinx.coroutines.Dispatchers
65
+ import kotlinx.coroutines.flow.flowOn
66
+ import kotlinx.coroutines.flow.map
62
67
import kotlinx.coroutines.launch
63
68
import javax.inject.Inject
64
69
@@ -249,26 +254,29 @@ class MenuDrawerFragment : Fragment() {
249
254
private fun observeMenuDrawerData () = with (mainViewModel) {
250
255
251
256
Utils .waitInitMediator(
252
- currentMailbox ,
257
+ mailboxesLive ,
253
258
menuDrawerViewModel.areMailboxesExpanded,
254
- menuDrawerViewModel.otherMailboxesLive,
255
259
currentFoldersLive,
256
260
menuDrawerViewModel.areCustomFoldersExpanded,
257
261
currentPermissionsLive,
258
262
currentQuotasLive,
259
263
constructor = {
260
264
@Suppress(" UNCHECKED_CAST" )
261
265
MediatorContainer (
262
- it[0 ] as Mailbox ? ,
266
+ it[0 ] as List < Mailbox > ,
263
267
it[1 ] as Boolean ,
264
- it[2 ] as List <Mailbox >,
265
- it[3 ] as List <Folder >,
266
- it[4 ] as Boolean ,
267
- it[5 ] as MailboxPermissions ? ,
268
- it[6 ] as Quotas ? ,
268
+ it[2 ] as List <Folder >,
269
+ it[3 ] as Boolean ,
270
+ it[4 ] as MailboxPermissions ? ,
271
+ it[5 ] as Quotas ? ,
269
272
)
270
273
}
271
- ).observe(viewLifecycleOwner, menuDrawerAdapter::setItems)
274
+ )
275
+ .asFlow()
276
+ .map(menuDrawerAdapter::formatList)
277
+ .flowOn(Dispatchers .IO )
278
+ .asLiveData()
279
+ .observe(viewLifecycleOwner, menuDrawerAdapter::submitList)
272
280
}
273
281
274
282
private fun observeCurrentFolder () {
@@ -297,9 +305,8 @@ class MenuDrawerFragment : Fragment() {
297
305
}
298
306
299
307
data class MediatorContainer (
300
- val currentMailbox : Mailbox ? ,
308
+ val mailboxes : List < Mailbox > ,
301
309
val areMailboxesExpanded : Boolean ,
302
- val otherMailboxes : List <Mailbox >,
303
310
val allFolders : List <Folder >,
304
311
val areCustomFoldersExpanded : Boolean ,
305
312
val permissions : MailboxPermissions ? ,
0 commit comments