From e297ed4bd261f0a1afaf644cede535467bf92de9 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 11 Jun 2020 17:09:58 -0500 Subject: [PATCH] Sort by alpha or order + insertion order --- .../main/java/org/tasks/filters/FilterProvider.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/tasks/filters/FilterProvider.kt b/app/src/main/java/org/tasks/filters/FilterProvider.kt index 9af9b12fc..b395e6dcb 100644 --- a/app/src/main/java/org/tasks/filters/FilterProvider.kt +++ b/app/src/main/java/org/tasks/filters/FilterProvider.kt @@ -6,6 +6,7 @@ import com.todoroo.andlib.utility.AndroidUtilities.assertNotMainThread import com.todoroo.astrid.api.CustomFilter import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.FilterListItem +import com.todoroo.astrid.api.FilterListItem.NO_ORDER import com.todoroo.astrid.core.BuiltInFilterExposer import org.tasks.BuildConfig import org.tasks.R @@ -169,7 +170,6 @@ class FilterProvider @Inject constructor( return googleTaskListDao.getAccounts().flatMap { googleTaskFilter(it, showCreate) } } - private fun googleTaskFilter(account: GoogleTaskAccount, showCreate: Boolean): List = listOf( NavigationDrawerSubheader( @@ -227,13 +227,21 @@ class FilterProvider @Inject constructor( companion object { private val COMPARATOR = Comparator { f1, f2 -> when { + f1.order == NO_ORDER && f2.order == NO_ORDER -> f1.id.compareTo(f2.id) + f1.order == NO_ORDER -> 1 + f2.order == NO_ORDER -> -1 f1.order < f2.order -> -1 f1.order > f2.order -> 1 else -> AlphanumComparator.FILTER.compare(f1, f2) } } - private fun List.sort(): List = sortedWith(COMPARATOR) + private fun List.sort(): List = + if (all { it.order == NO_ORDER }) { + sortedWith(AlphanumComparator.FILTER) + } else { + sortedWith(COMPARATOR) + } private fun Collection.plusAllIf(predicate: Boolean, item: () -> Iterable): List = plus(if (predicate) item.invoke() else emptyList())