mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
Fix TypeError when deck list or overview refreshes during optimal retention
Caused by legacy code blocking the main thread. https://forums.ankiweb.net/t/anki-23-10-beta/34912/79
This commit is contained in:
parent
d16faacd0f
commit
0ef28853fd
3 changed files with 28 additions and 13 deletions
|
@ -29,5 +29,5 @@ class DummyScheduler(SchedulerBaseWithLegacy):
|
|||
def active_decks(self) -> list[DeckId]:
|
||||
return []
|
||||
|
||||
def counts(self) -> list[int]:
|
||||
return [0, 0, 0]
|
||||
def counts(self) -> tuple[int, int, int]:
|
||||
return (0, 0, 0)
|
||||
|
|
|
@ -146,12 +146,21 @@ class DeckBrowser:
|
|||
|
||||
def _renderPage(self, reuse: bool = False) -> None:
|
||||
if not reuse:
|
||||
self._dueTree = self.mw.col.sched.deck_due_tree()
|
||||
|
||||
def success(tree: DeckTreeNode) -> None:
|
||||
self._dueTree = tree
|
||||
self.__renderPage(None)
|
||||
return
|
||||
|
||||
QueryOp(
|
||||
parent=self.mw,
|
||||
op=lambda col: col.sched.deck_due_tree(),
|
||||
success=success,
|
||||
).run_in_background()
|
||||
else:
|
||||
self.web.evalWithCallback("window.pageYOffset", self.__renderPage)
|
||||
|
||||
def __renderPage(self, offset: int) -> None:
|
||||
def __renderPage(self, offset: int | None) -> None:
|
||||
content = DeckBrowserContent(
|
||||
tree=self._renderDeckTree(self._dueTree),
|
||||
stats=self._renderStats(),
|
||||
|
|
|
@ -12,6 +12,7 @@ from anki.scheduler import UnburyDeck
|
|||
from aqt import gui_hooks
|
||||
from aqt.deckdescription import DeckDescriptionDialog
|
||||
from aqt.deckoptions import display_options_for_deck
|
||||
from aqt.operations import QueryOp
|
||||
from aqt.operations.scheduling import (
|
||||
empty_filtered_deck,
|
||||
rebuild_filtered_deck,
|
||||
|
@ -61,6 +62,7 @@ class Overview:
|
|||
self.refresh()
|
||||
|
||||
def refresh(self) -> None:
|
||||
def success(_counts: tuple) -> None:
|
||||
self._refresh_needed = False
|
||||
self.mw.col.reset()
|
||||
self._renderPage()
|
||||
|
@ -68,6 +70,10 @@ class Overview:
|
|||
self.mw.web.setFocus()
|
||||
gui_hooks.overview_did_refresh(self)
|
||||
|
||||
QueryOp(
|
||||
parent=self.mw, op=lambda col: col.sched.counts(), success=success
|
||||
).run_in_background()
|
||||
|
||||
def refresh_if_needed(self) -> None:
|
||||
if self._refresh_needed:
|
||||
self.refresh()
|
||||
|
|
Loading…
Reference in a new issue