mirror of
https://git.sr.ht/~tsileo/microblog.pub
synced 2024-11-15 03:04:28 +00:00
Bugfixes
This commit is contained in:
parent
200c6edc18
commit
be68208056
2 changed files with 17 additions and 12 deletions
|
@ -365,7 +365,7 @@ class MicroblogPubBackend(Backend):
|
|||
key to make it easy to query a whole thread."""
|
||||
in_reply_to = create.get_object().inReplyTo
|
||||
if not in_reply_to:
|
||||
pass
|
||||
return
|
||||
|
||||
new_threads = []
|
||||
root_reply = in_reply_to
|
||||
|
|
27
app.py
27
app.py
|
@ -516,29 +516,34 @@ def with_replies():
|
|||
|
||||
def _build_thread(data, include_children=True):
|
||||
data["_requested"] = True
|
||||
print(data)
|
||||
root_id = data["meta"].get("thread_root_parent", data["activity"]["object"]["id"])
|
||||
|
||||
thread_ids = data["meta"].get("thread_parents", [])
|
||||
if include_children:
|
||||
thread_ids.extend(data["meta"].get("thread_children", []))
|
||||
query = {"$or": [{"meta.thread_root_parent": root_id, "type": "Create"}]}
|
||||
if data['activity']['object'].get('inReplyTo'):
|
||||
query['$or'].append({'activity.object.id': data['activity']['object']['inReplyTo']})
|
||||
|
||||
query = {
|
||||
"activity.object.id": {"$in": thread_ids},
|
||||
"type": "Create",
|
||||
"meta.deleted": False, # TODO(tsileo): handle Tombstone instead of filtering them
|
||||
}
|
||||
# Fetch the root replies, and the children
|
||||
replies = [data] + list(DB.inbox.find(query)) + list(DB.outbox.find(query))
|
||||
|
||||
replies = (
|
||||
[data]
|
||||
+ list(DB.inbox.find(query))
|
||||
+ list(DB.outbox.find(query))
|
||||
+ list(DB.threads.find(query))
|
||||
)
|
||||
replies = sorted(replies, key=lambda d: d["activity"]["object"]["published"])
|
||||
# Index all the IDs in order to build a tree
|
||||
idx = {}
|
||||
replies2 = []
|
||||
for rep in replies:
|
||||
rep_id = rep["activity"]["object"]["id"]
|
||||
if rep_id in idx:
|
||||
continue
|
||||
idx[rep_id] = rep.copy()
|
||||
idx[rep_id]["_nodes"] = []
|
||||
replies2.append(rep)
|
||||
|
||||
# Build the tree
|
||||
for rep in replies:
|
||||
for rep in replies2:
|
||||
rep_id = rep["activity"]["object"]["id"]
|
||||
if rep_id == root_id:
|
||||
continue
|
||||
|
|
Loading…
Reference in a new issue