Skip to content

Commit b2ab424

Browse files
david-allisonmikehardy
authored andcommitted
fix(card-browser): incorrect 'notes' sort order
Issue: when moving to 'cards or notes' We used 'sortType' instead of 'noteSortType' Then when we loaded it from the collection, it caused problems Caused: ``` com.ichi2.libanki.exception.InvalidSearchException: net.ankiweb.rsdroid.exceptions.BackendInvalidInputException: Can't sort Notes by Custom. at com.ichi2.libanki.Collection.findNotes(Collection.kt:398) ``` Fixes 16514 (cherry picked from commit 0acdba3)
1 parent 8f1238e commit b2ab424

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

AnkiDroid/src/main/java/com/ichi2/anki/browser/CardBrowserViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ class CardBrowserViewModel(
289289
flowOfCardsOrNotes.update { cardsOrNotes }
290290

291291
withCol {
292-
sortTypeFlow.update { SortType.fromCol(config, sharedPrefs()) }
292+
sortTypeFlow.update { SortType.fromCol(config, cardsOrNotes, sharedPrefs()) }
293293
reverseDirectionFlow.update { ReverseDirection.fromConfig(config) }
294294
}
295295
Timber.i("initCompleted")

AnkiDroid/src/main/java/com/ichi2/anki/model/SortType.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ enum class SortType(val ankiSortType: String?, val cardBrowserLabelIndex: Int) {
5555
config.set("sortType", this.ankiSortType ?: SORT_FIELD.ankiSortType)
5656
config.set("noteSortType", this.ankiSortType ?: SORT_FIELD.ankiSortType)
5757
preferences.edit {
58+
// TODO: This should be changed to use the collection
59+
// and have a different value for cards & notes
5860
putBoolean("cardBrowserNoSorting", this@SortType == NO_SORTING)
5961
}
6062
}
@@ -64,8 +66,9 @@ enum class SortType(val ankiSortType: String?, val cardBrowserLabelIndex: Int) {
6466
if (this == NO_SORTING) SortOrder.NoOrdering() else SortOrder.UseCollectionOrdering()
6567

6668
companion object {
67-
fun fromCol(config: Config, preferences: SharedPreferences): SortType {
68-
val colOrder = config.get<String>("sortType")
69+
fun fromCol(config: Config, cardsOrNotes: CardsOrNotes, preferences: SharedPreferences): SortType {
70+
val configKey = if (cardsOrNotes == CardsOrNotes.CARDS) "sortType" else "noteSortType"
71+
val colOrder = config.get<String>(configKey)
6972
val type = entries.firstOrNull { it.ankiSortType == colOrder } ?: NO_SORTING
7073
if (type == SORT_FIELD && preferences.getBoolean("cardBrowserNoSorting", false)) {
7174
return NO_SORTING

AnkiDroid/src/test/java/com/ichi2/anki/browser/CardBrowserViewModelTest.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,17 @@ class CardBrowserViewModelTest : JvmTest() {
176176
assertThat("unbury: queue -> NEW", getQueue(), equalTo(QUEUE_TYPE_NEW))
177177
}
178178

179+
@Test
180+
fun `sort order from notes is selected - 16514`() {
181+
col.config.set("sortType", "noteCrt")
182+
col.config.set("noteSortType", "_field_Frequency")
183+
with(col) { CardsOrNotes.NOTES.saveToCollection() }
184+
185+
runViewModelTest(notes = 1) {
186+
assertThat("1 row returned", rowCount, equalTo(1))
187+
}
188+
}
189+
179190
private fun runViewModelTest(notes: Int = 0, manualInit: Boolean = true, testBody: suspend CardBrowserViewModel.() -> Unit) = runTest {
180191
for (i in 0 until notes) {
181192
addNoteUsingBasicModel()

0 commit comments

Comments
 (0)