Rework rollover check

- Avoid waking up frequently
- Ensure collection access happens before sync begins, as otherwise
it may block the UI
This commit is contained in:
Damien Elmes 2023-12-10 12:36:08 +10:00
parent e9a8b676a7
commit c09a46f857

View file

@ -504,26 +504,32 @@ class AnkiQt(QMainWindow):
if not self.safeMode: if not self.safeMode:
self.maybe_check_for_addon_updates(self.setup_auto_update) self.maybe_check_for_addon_updates(self.setup_auto_update)
self.maybe_auto_sync_on_open_close(_onsuccess)
last_day_cutoff = self.col.sched.day_cutoff last_day_cutoff = self.col.sched.day_cutoff
def refresh_reviewer_on_day_rollover_change(): def refresh_reviewer_on_day_rollover_change():
from aqt.reviewer import RefreshNeeded from aqt.reviewer import RefreshNeeded
# need to refresh?
nonlocal last_day_cutoff nonlocal last_day_cutoff
if self.state == "review" and last_day_cutoff != self.col.sched.day_cutoff: current_cutoff = self.col.sched.day_cutoff
if self.state == "review" and last_day_cutoff != current_cutoff:
last_day_cutoff = self.col.sched.day_cutoff last_day_cutoff = self.col.sched.day_cutoff
self.reviewer._refresh_needed = RefreshNeeded.QUEUES self.reviewer._refresh_needed = RefreshNeeded.QUEUES
self.reviewer.refresh_if_needed() self.reviewer.refresh_if_needed()
# schedule another check
secs_until_cutoff = current_cutoff - int_time()
self._reviewer_refresh_timer = self.progress.timer( self._reviewer_refresh_timer = self.progress.timer(
1000, secs_until_cutoff * 1000,
refresh_reviewer_on_day_rollover_change, refresh_reviewer_on_day_rollover_change,
repeat=True, repeat=False,
parent=self, parent=self,
) )
refresh_reviewer_on_day_rollover_change()
self.maybe_auto_sync_on_open_close(_onsuccess)
def unloadProfile(self, onsuccess: Callable) -> None: def unloadProfile(self, onsuccess: Callable) -> None:
def callback() -> None: def callback() -> None:
self._unloadProfile() self._unloadProfile()