Pulling any missing posts by ID
We have the post ID, so why would Pleroma not send us the post? Request any missing posts it hasn't sent us, to try and get a thread that doesn't lose all its replies.
This commit is contained in:
parent
3d96963113
commit
8cda9227b9
|
@ -1,9 +1,13 @@
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
def maketree(descendants):
|
def maketree(mastodon, descendants):
|
||||||
lookup = dict((descendant.id, descendant) for descendant in descendants)
|
lookup = dict((descendant.id, descendant) for descendant in descendants)
|
||||||
replies = {}
|
replies = {}
|
||||||
roots = set()
|
roots = set()
|
||||||
|
def lookup_or_fetch(id):
|
||||||
|
if not id in lookup:
|
||||||
|
lookup[id] = mastodon.status(id)
|
||||||
|
return lookup[id]
|
||||||
def getreps(id):
|
def getreps(id):
|
||||||
if id in replies:
|
if id in replies:
|
||||||
reps = replies[id]
|
reps = replies[id]
|
||||||
|
@ -30,12 +34,12 @@ def maketree(descendants):
|
||||||
seen.add(rep)
|
seen.add(rep)
|
||||||
subreps = replies.get(rep)
|
subreps = replies.get(rep)
|
||||||
if subreps:
|
if subreps:
|
||||||
yield lookup[rep], onelevel(subreps)
|
yield lookup_or_fetch(rep), onelevel(subreps)
|
||||||
else:
|
else:
|
||||||
yield lookup[rep], ()
|
yield lookup_or_fetch(rep), ()
|
||||||
def leftovers():
|
def leftovers():
|
||||||
for leftover in set(lookup.keys()) - seen:
|
for leftover in set(lookup.keys()) - seen:
|
||||||
yield lookup[leftover]
|
yield lookup_or_fetch(leftover)
|
||||||
return onelevel(roots), leftovers
|
return onelevel(roots), leftovers
|
||||||
|
|
||||||
# returns (status, gen[(status, gen[(status, ...), (status, ())]), ...])
|
# returns (status, gen[(status, gen[(status, ...), (status, ())]), ...])
|
||||||
|
@ -60,15 +64,13 @@ def unmaketree(tree):
|
||||||
yield from unmaketree(children)
|
yield from unmaketree(children)
|
||||||
yield OUT
|
yield OUT
|
||||||
|
|
||||||
def build(descendants):
|
def build(mastodon, descendants):
|
||||||
herp, derp = maketree(descendants)
|
tree, leftover = maketree(mastodon, descendants)
|
||||||
yield IN
|
yield IN
|
||||||
yield from unmaketree(herp)
|
yield from unmaketree(tree)
|
||||||
yield OUT
|
yield OUT
|
||||||
yield IN
|
yield IN
|
||||||
derp = tuple(derp())
|
leftover = tuple(leftover())
|
||||||
pprint(("derp", derp))
|
for post in leftover:
|
||||||
for post in derp:
|
|
||||||
pprint(("derp?", post))
|
|
||||||
yield POST(post)
|
yield POST(post)
|
||||||
yield OUT
|
yield OUT
|
||||||
|
|
|
@ -692,7 +692,7 @@ def thread(request, id):
|
||||||
# descendants = [
|
# descendants = [
|
||||||
# x for x in context.descendants if not toot_matches_filters(x, filters)
|
# x for x in context.descendants if not toot_matches_filters(x, filters)
|
||||||
# ]
|
# ]
|
||||||
posts = tuple(threadtree.build(context.descendants))
|
posts = tuple(threadtree.build(mastodon, context.descendants))
|
||||||
return render(
|
return render(
|
||||||
request,
|
request,
|
||||||
"main/thread.html",
|
"main/thread.html",
|
||||||
|
|
Loading…
Reference in New Issue