Implement reactions and image sync

This commit is contained in:
2026-02-17 21:23:03 +00:00
parent 6bc8a0ab88
commit dc28745fc3
14 changed files with 2011 additions and 202 deletions

View File

@@ -402,6 +402,28 @@ def _serialize_message(msg: Message) -> dict:
receipt_payload = msg.receipt_payload or {}
read_source_service = str(msg.read_source_service or "").strip()
read_by_identifier = str(msg.read_by_identifier or "").strip()
reaction_rows = []
seen_reactions = set()
for row in list(receipt_payload.get("reactions") or []):
item = dict(row or {})
if bool(item.get("removed")):
continue
emoji = str(item.get("emoji") or "").strip()
if not emoji:
continue
actor = str(item.get("actor") or "").strip()
source = str(item.get("source_service") or "").strip().lower()
key = (emoji, actor, source)
if key in seen_reactions:
continue
seen_reactions.add(key)
reaction_rows.append(
{
"emoji": emoji,
"actor": actor,
"source_service": source,
}
)
return {
"id": str(msg.id),
@@ -427,6 +449,7 @@ def _serialize_message(msg: Message) -> dict:
"receipt_payload": receipt_payload,
"read_source_service": read_source_service,
"read_by_identifier": read_by_identifier,
"reactions": reaction_rows,
}