Bugs y restaurar mastodon a su estado original, que se tocó sin querer

This commit is contained in:
Jesús Pavón Abián
2026-02-05 09:31:50 +01:00
parent de1c9ee744
commit abf4cb0df1
5 changed files with 39 additions and 19 deletions

View File

@@ -954,9 +954,14 @@ class BaseBuffer(base.Buffer):
return post.get("uri")
if it.get("uri"):
return it.get("uri")
for key in ("id", "convoId", "convo_id", "messageId", "message_id", "msgId", "msg_id"):
for key in ("id", "cid", "rev", "convoId", "convo_id", "messageId", "message_id", "msgId", "msg_id"):
if it.get(key):
return it.get(key)
nested = it.get("message") or it.get("record")
if isinstance(nested, dict):
for key in ("id", "cid", "rev", "messageId", "message_id", "msgId", "msg_id"):
if nested.get(key):
return nested.get(key)
if it.get("did"):
return it.get("did")
if it.get("handle"):
@@ -965,27 +970,33 @@ class BaseBuffer(base.Buffer):
if isinstance(author, dict):
return author.get("did") or author.get("handle")
# Chat message fallback
sent_at = it.get("sentAt") or it.get("sent_at")
sender = it.get("sender") or {}
sent_at = it.get("sentAt") or it.get("sent_at") or it.get("createdAt") or it.get("created_at")
sender = it.get("sender") or (nested.get("sender") if isinstance(nested, dict) else {}) or {}
sender_did = sender.get("did") if isinstance(sender, dict) else None
text = it.get("text")
text = it.get("text") or (nested.get("text") if isinstance(nested, dict) else None)
if sent_at or sender_did or text:
return (sent_at, sender_did, text)
return None
post = getattr(it, "post", None)
if post is not None:
return getattr(post, "uri", None)
for attr in ("uri", "id", "convoId", "convo_id", "messageId", "message_id", "msgId", "msg_id", "did", "handle"):
for attr in ("uri", "id", "cid", "rev", "convoId", "convo_id", "messageId", "message_id", "msgId", "msg_id", "did", "handle"):
val = getattr(it, attr, None)
if val:
return val
nested = getattr(it, "message", None) or getattr(it, "record", None)
if nested is not None:
for attr in ("id", "cid", "rev", "messageId", "message_id", "msgId", "msg_id"):
val = getattr(nested, attr, None)
if val:
return val
author = getattr(it, "author", None)
if author is not None:
return getattr(author, "did", None) or getattr(author, "handle", None)
sent_at = getattr(it, "sentAt", None) or getattr(it, "sent_at", None)
sender = getattr(it, "sender", None)
sent_at = getattr(it, "sentAt", None) or getattr(it, "sent_at", None) or getattr(it, "createdAt", None) or getattr(it, "created_at", None)
sender = getattr(it, "sender", None) or (getattr(nested, "sender", None) if nested is not None else None)
sender_did = getattr(sender, "did", None) if sender is not None else None
text = getattr(it, "text", None)
text = getattr(it, "text", None) or (getattr(nested, "text", None) if nested is not None else None)
if sent_at or sender_did or text:
return (sent_at, sender_did, text)
return None

View File

@@ -92,15 +92,22 @@ class ConversationListBuffer(BaseBuffer):
return obj.get(key, default)
return getattr(obj, key, default)
for attr in ("id", "messageId", "message_id", "msgId", "msg_id"):
for attr in ("id", "messageId", "message_id", "msgId", "msg_id", "cid", "rev"):
val = g(last_msg, attr)
if val:
return val
sent_at = g(last_msg, "sentAt") or g(last_msg, "sent_at")
sender = g(last_msg, "sender") or {}
nested = g(last_msg, "message") or g(last_msg, "record")
if nested:
for attr in ("id", "messageId", "message_id", "msgId", "msg_id", "cid", "rev"):
val = g(nested, attr)
if val:
return val
sent_at = g(last_msg, "sentAt") or g(last_msg, "sent_at") or g(last_msg, "createdAt") or g(last_msg, "created_at")
sender = g(last_msg, "sender") or (g(nested, "sender") if nested else {}) or {}
sender_did = g(sender, "did")
text = g(last_msg, "text")
text = g(last_msg, "text") or (g(nested, "text") if nested else None)
if sent_at or sender_did or text:
return (sent_at, sender_did, text)
return None
@@ -210,11 +217,13 @@ class ConversationListBuffer(BaseBuffer):
new_db = []
new_count = 0
first_load = len(self.session.db[self.name]) == 0
for convo in items:
key = self.get_convo_id(convo) or self._get_members_key(convo)
new_db.append(convo)
if key is None:
new_count += 1
if first_load:
new_count += 1
continue
if key not in existing:
new_count += 1