Skip to content

Commit 9e63e61

Browse files
committed
Only clear dirty bit after nodes are persisted
1 parent d56a9e3 commit 9e63e61

File tree

2 files changed

+143
-72
lines changed

2 files changed

+143
-72
lines changed

src/gkeepapi/__init__.py

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -700,7 +700,9 @@ def login(
700700
Raises:
701701
LoginException: If there was a problem logging in.
702702
"""
703-
logger.warning("'Keep.login' is deprecated. Please use 'Keep.authenticate' instead")
703+
logger.warning(
704+
"'Keep.login' is deprecated. Please use 'Keep.authenticate' instead"
705+
)
704706
auth = APIAuth(self.OAUTH_SCOPES)
705707
if device_id is None:
706708
device_id = f"{get_mac():x}"
@@ -716,7 +718,9 @@ def resume(
716718
sync: bool = True,
717719
device_id: str | None = None,
718720
) -> None:
719-
logger.warning("'Keep.resume' has been renamed to 'Keep.authenticate'. Please update your code")
721+
logger.warning(
722+
"'Keep.resume' has been renamed to 'Keep.authenticate'. Please update your code"
723+
)
720724
self.authenticate(email, master_token, state, sync, device_id)
721725

722726
def authenticate(
@@ -787,8 +791,8 @@ def dump(self) -> dict:
787791
nodes.extend(node.children)
788792
return {
789793
"keep_version": self._keep_version,
790-
"labels": [label.save(False) for label in self.labels()],
791-
"nodes": [node.save(False) for node in nodes],
794+
"labels": [label.save(False, True) for label in self.labels()],
795+
"nodes": [node.save(False, True) for node in nodes],
792796
}
793797

794798
def restore(self, state: dict) -> None:
@@ -1018,7 +1022,7 @@ def labels(self) -> list[_node.Label]:
10181022
"""
10191023
return list(self._labels.values())
10201024

1021-
def __UNSTABLE_API_uploadMedia(self, fh: IO)-> None:
1025+
def __UNSTABLE_API_uploadMedia(self, fh: IO) -> None:
10221026
pass
10231027

10241028
def getMediaLink(self, blob: _node.Blob) -> str:
@@ -1083,15 +1087,22 @@ def _sync_notes(self) -> None:
10831087
logger.debug("Starting keep sync: %s", self._keep_version)
10841088

10851089
# Collect any changes and send them up to the server.
1086-
labels_updated = any(i.dirty for i in self._labels.values())
1090+
updated_nodes = self._findDirtyNodes()
1091+
updated_labels = [label for label in self._labels.values() if label.dirty]
10871092
changes = self._keep_api.changes(
10881093
target_version=self._keep_version,
1089-
nodes=[i.save() for i in self._findDirtyNodes()],
1090-
labels=[i.save() for i in self._labels.values()]
1091-
if labels_updated
1094+
nodes=[i.save(False) for i in updated_nodes],
1095+
labels=[i.save(False) for i in self._labels.values()]
1096+
if updated_labels
10921097
else None,
10931098
)
10941099

1100+
# Clear
1101+
for node in updated_nodes:
1102+
node.clean()
1103+
for label in updated_labels:
1104+
label.clean()
1105+
10951106
if changes.get("forceFullResync"):
10961107
raise exception.ResyncRequiredException("Full resync required")
10971108

0 commit comments

Comments
 (0)