Skip to content

Commit a5ca168

Browse files
authored
feat: use setCollapsed method from backend #18770
1 parent d24a184 commit a5ca168

File tree

4 files changed

+29
-14
lines changed

4 files changed

+29
-14
lines changed

AnkiDroid/src/main/java/com/ichi2/anki/DeckPicker.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2526,8 +2526,11 @@ open class DeckPicker :
25262526
changes: OpChanges,
25272527
handler: Any?,
25282528
) {
2529-
// undo state may have changed
2530-
invalidateOptionsMenu()
2529+
lifecycleScope.launch {
2530+
updateMenuState()
2531+
// undo state may have changed
2532+
invalidateOptionsMenu()
2533+
}
25312534
if (changes.studyQueues && handler !== this && handler !== viewModel) {
25322535
if (!activityPaused) {
25332536
// No need to update while the activity is paused, because `onResume` calls `refreshState` that calls `updateDeckList`.

AnkiDroid/src/main/java/com/ichi2/anki/deckpicker/DeckPickerViewModel.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import androidx.lifecycle.ViewModel
2222
import androidx.lifecycle.viewModelScope
2323
import anki.card_rendering.EmptyCardsReport
2424
import anki.collection.OpChanges
25+
import anki.decks.SetDeckCollapsedRequest
2526
import anki.i18n.GeneratedTranslations
2627
import com.ichi2.anki.CollectionManager
2728
import com.ichi2.anki.CollectionManager.TR
@@ -353,11 +354,17 @@ class DeckPickerViewModel :
353354

354355
fun toggleDeckExpand(deckId: DeckId) =
355356
viewModelScope.launch {
356-
// update DB
357-
withCol { decks.collapse(deckId) }
358357
// update stored state
359358
dueTree?.find(deckId)?.run {
360359
collapsed = !collapsed
360+
// Anki uses scope as Reviewer in deck browser
361+
withCol {
362+
decks.setCollapsed(
363+
did,
364+
collapsed = collapsed,
365+
SetDeckCollapsedRequest.Scope.REVIEWER,
366+
)
367+
}
361368
}
362369
flowOfRefreshDeckList.emit(Unit)
363370
}

libanki/src/main/java/com/ichi2/anki/libanki/Deck.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,12 @@ class Deck : JSONObject {
5757
put("collapsed", value)
5858
}
5959

60+
var browserCollapsed: Boolean
61+
get() = optBoolean("browserCollapsed", false)
62+
set(value) {
63+
put("browserCollapsed", value)
64+
}
65+
6066
/**
6167
* Unique identifier of the deck
6268
*

libanki/src/main/java/com/ichi2/anki/libanki/Decks.kt

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -235,28 +235,27 @@ class Decks(
235235
TODO()
236236
}
237237

238-
@RustCleanup("implement and make public")
239238
@LibAnkiAlias("set_collapsed")
240-
@Suppress("unused", "unused_parameter")
241-
private fun setCollapsed(
239+
fun setCollapsed(
242240
deckId: DeckId,
243241
collapsed: Boolean,
244242
scope: SetDeckCollapsedRequest.Scope,
245-
): OpChanges {
246-
TODO()
247-
}
243+
): OpChanges = col.backend.setDeckCollapsed(deckId, collapsed, scope)
248244

245+
@LibAnkiAlias("collapse")
249246
fun collapse(did: DeckId) {
250247
val deck = this.getLegacy(did) ?: return
251248
deck.collapsed = !deck.collapsed
252249
this.save(deck)
253250
}
254251

255-
@RustCleanup("implement and make public")
256252
@LibAnkiAlias("collapse_browser")
257-
@Suppress("unused", "unused_parameter")
258-
private fun collapseBrowser(deckId: DeckId) {
259-
TODO()
253+
@Suppress("unused")
254+
fun collapseBrowser(deckId: DeckId) {
255+
val deck = this.getLegacy(deckId) ?: return
256+
val collapsed = deck.browserCollapsed
257+
deck.browserCollapsed = !collapsed
258+
this.save(deck)
260259
}
261260

262261
fun count(): Int = len(this.allNamesAndIds())

0 commit comments

Comments
 (0)