diff --git a/app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/FolderController.kt b/app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/FolderController.kt index 7cd07e22f7..50bef9fca0 100644 --- a/app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/FolderController.kt +++ b/app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/FolderController.kt @@ -45,10 +45,6 @@ class FolderController @Inject constructor( ) { //region Get data - fun getCustomFolders(): RealmResults { - return getCustomFoldersQuery(mailboxContentRealm()).find() - } - fun getMoveFolders(): RealmResults { return getMoveFoldersQuery(mailboxContentRealm()).find() } @@ -151,7 +147,9 @@ class FolderController @Inject constructor( private fun getDefaultFoldersQuery(realm: TypedRealm): RealmQuery { val hasRole = "${Folder.rolePropertyName} != nil" - return realm.query("$isNotSearch AND $hasRole") + return realm + .query("$isNotSearch AND $hasRole") + .sort(Folder::roleOrder.name, Sort.DESCENDING) } private fun getCustomFoldersQuery(realm: TypedRealm): RealmQuery { diff --git a/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt b/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt index 8eb2eecb6f..fe6ca02af0 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt @@ -138,12 +138,12 @@ class MainViewModel @Inject constructor( }.asLiveData(ioCoroutineContext) val currentDefaultFoldersLive = _currentMailboxObjectId.flatMapLatest { objectId -> - objectId?.let { folderController.getDefaultFoldersAsync().map { it.list.getDefaultMenuFolders() } } ?: emptyFlow() + objectId?.let { folderController.getDefaultFoldersAsync().map { it.list.flattenFolderChildren() } } ?: emptyFlow() }.asLiveData(ioCoroutineContext) val currentCustomFoldersLive = _currentMailboxObjectId.flatMapLatest { objectId -> objectId - ?.let { folderController.getCustomFoldersAsync().map { it.list.getCustomMenuFolders(dismissHiddenChildren = true) } } + ?.let { folderController.getCustomFoldersAsync().map { it.list.flattenFolderChildren(dismissHiddenChildren = true) } } ?: emptyFlow() }.asLiveData(ioCoroutineContext) diff --git a/app/src/main/java/com/infomaniak/mail/ui/main/menu/MoveViewModel.kt b/app/src/main/java/com/infomaniak/mail/ui/main/menu/MoveViewModel.kt index ad81e300ae..d639b1bc87 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/main/menu/MoveViewModel.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/main/menu/MoveViewModel.kt @@ -26,7 +26,7 @@ import com.infomaniak.mail.data.models.Folder import com.infomaniak.mail.di.IoDispatcher import com.infomaniak.mail.utils.coroutineContext import com.infomaniak.mail.utils.extensions.appContext -import com.infomaniak.mail.utils.extensions.getCustomMenuFolders +import com.infomaniak.mail.utils.extensions.flattenFolderChildren import com.infomaniak.mail.utils.extensions.standardize import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.* @@ -61,7 +61,7 @@ class MoveViewModel @Inject constructor( currentFolderId = messageUid?.let(messageController::getMessage)?.folderId ?: threadController.getThread(threadsUids.first())!!.folderId - val folders = folderController.getMoveFolders().getCustomMenuFolders() + val folders = folderController.getMoveFolders().flattenFolderChildren() emit(folders) } diff --git a/app/src/main/java/com/infomaniak/mail/utils/extensions/Extensions.kt b/app/src/main/java/com/infomaniak/mail/utils/extensions/Extensions.kt index f589840293..f60ed111be 100644 --- a/app/src/main/java/com/infomaniak/mail/utils/extensions/Extensions.kt +++ b/app/src/main/java/com/infomaniak/mail/utils/extensions/Extensions.kt @@ -301,14 +301,6 @@ fun List.getMenuFolders(): Pair, List> { } } -fun List.getDefaultMenuFolders(): List { - return sortedBy { it.role?.order }.flattenFolderChildren() -} - -fun List.getCustomMenuFolders(dismissHiddenChildren: Boolean = false): List { - return flattenFolderChildren(dismissHiddenChildren) -} - fun List.flattenFolderChildren(dismissHiddenChildren: Boolean = false): List { if (isEmpty()) return this