Retro Bulletin Board Systems on atproto. Web app and TUI. lazy mirror of alyraffauf/atbbs atbbs.xyz
forums python tui atproto bbs
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

tui: fetch replies off-page

+21 -2
+21 -2
tui/screens/thread.py
··· 10 10 11 11 from core import lexicon 12 12 from core.models import BBS, AtUri, AuthError, Reply, Thread 13 - from core.records import create_ban_record, create_hidden_record, delete_record 13 + from core.records import ( 14 + create_ban_record, 15 + create_hidden_record, 16 + delete_record, 17 + reply_from_record, 18 + ) 14 19 from core.records import hydrate_replies as fetch_replies 20 + from core.slingshot import get_record, resolve_identity 15 21 from tui.screens.compose import ComposeReplyScreen 16 22 from tui.util import make_session_updater, require_session 17 23 from tui.widgets.breadcrumb import Breadcrumb ··· 83 89 for post in self.query(Post): 84 90 if post.collection == lexicon.REPLY: 85 91 post.remove() 86 - self._replies_map.clear() 87 92 88 93 @work(exclusive=True) 89 94 async def load_replies(self, page: int = 1) -> None: ··· 107 112 108 113 for r in result.replies: 109 114 self._replies_map[r.uri] = r 115 + 116 + # Fetch any quoted replies not already known 117 + missing = [ 118 + r.quote for r in result.replies 119 + if r.quote and r.quote not in self._replies_map 120 + ] 121 + for uri in missing: 122 + try: 123 + parsed = AtUri.parse(uri) 124 + rec = await get_record(client, parsed.did, parsed.collection, parsed.rkey) 125 + author = await resolve_identity(client, parsed.did) 126 + self._replies_map[uri] = reply_from_record(rec, author) 127 + except Exception: 128 + pass 110 129 111 130 for r in result.replies: 112 131 quote_text = None