possible fix for sync button colour blue after sync
If the client's clock is behind AnkiWeb's, even by a few seconds, we can end up with a situation where last_begin_at is updated after the sync to a value less than the mtime we received from AnkiWeb, causing the collection to be saved, which bumps the modtime. Work around this by recording mtime at begin() time, and seeing if it has changed in either direction. Thanks to Rumo, who did the hard work looking into it: https://forums.ankiweb.net/t/why-is-my-sync-button-blue/2078/21
This commit is contained in:
parent
c18ea8ef78
commit
73679b03e7
@ -196,7 +196,7 @@ class Collection:
|
|||||||
# Until we can move away from long-running transactions, the Python
|
# Until we can move away from long-running transactions, the Python
|
||||||
# code needs to know if transaction should be committed, so we need
|
# code needs to know if transaction should be committed, so we need
|
||||||
# to check if the backend updated the modification time.
|
# to check if the backend updated the modification time.
|
||||||
return self.db.last_begin_at <= self.mod
|
return self.db.last_begin_at != self.mod
|
||||||
|
|
||||||
def save(
|
def save(
|
||||||
self, name: Optional[str] = None, mod: Optional[int] = None, trx: bool = True
|
self, name: Optional[str] = None, mod: Optional[int] = None, trx: bool = True
|
||||||
|
@ -30,7 +30,7 @@ class DBProxy:
|
|||||||
###############
|
###############
|
||||||
|
|
||||||
def begin(self) -> None:
|
def begin(self) -> None:
|
||||||
self.last_begin_at = anki.utils.intTime(1000)
|
self.last_begin_at = self.scalar("select mod from col")
|
||||||
self._backend.db_begin()
|
self._backend.db_begin()
|
||||||
|
|
||||||
def commit(self) -> None:
|
def commit(self) -> None:
|
||||||
|
Loading…
Reference in New Issue
Block a user