From 71a252019839d8e04ad5f996899dbf82eee9b017 Mon Sep 17 00:00:00 2001 From: Ivan Habunek Date: Mon, 13 Mar 2023 13:37:02 +0100 Subject: [PATCH] Extract refresh timeline code --- toot/tui/app.py | 50 +++++++++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/toot/tui/app.py b/toot/tui/app.py index e04f7a6..0ce7be2 100644 --- a/toot/tui/app.py +++ b/toot/tui/app.py @@ -493,7 +493,8 @@ class TUI(urwid.Frame): def goto_public_timeline(self, local): self.timeline_generator = api.public_timeline_generator( self.app, self.user, local=local, limit=40) - promise = self.async_load_timeline(is_initial=True, timeline_name="local public" if local else "global public") + timeline_name = "local public" if local else "global public" + promise = self.async_load_timeline(is_initial=True, timeline_name=timeline_name) promise.add_done_callback(lambda *args: self.close_overlay()) def goto_bookmarks(self): @@ -715,6 +716,31 @@ class TUI(urwid.Frame): if self.timeline: self.timeline.refresh_status_details() + def refresh_timeline(self): + # No point in refreshing the bookmarks timeline + if not self.timeline or self.timeline.name == 'bookmarks': + return + + if self.timeline.name.startswith("#"): + self.timeline_generator = api.tag_timeline_generator( + self.app, self.user, self.timeline.name[1:], limit=40) + else: + if self.timeline.name.endswith("public"): + self.timeline_generator = api.public_timeline_generator( + self.app, self.user, local=self.timeline.name.startswith("local"), limit=40) + elif self.timeline.name == "notifications": + self.timeline_generator = api.notification_timeline_generator( + self.app, self.user, limit=40) + elif self.timeline.name == "conversations": + self.timeline_generator = api.conversation_timeline_generator( + self.app, self.user, limit=40) + else: + # default to home timeline + self.timeline_generator = api.home_timeline_generator( + self.app, self.user, limit=40) + + self.async_load_timeline(is_initial=True, timeline_name=self.timeline.name) + # --- Keys ----------------------------------------------------------------- def unhandled_input(self, key): @@ -733,27 +759,7 @@ class TUI(urwid.Frame): elif key == ',': if not self.overlay: - if self.timeline.name == 'bookmarks': - return # no point in refreshing the bookmarks timeline - if self.timeline.name.startswith("#"): - self.timeline_generator = api.tag_timeline_generator( - self.app, self.user, self.timeline.name[1:], limit=40) - else: - if self.timeline.name.endswith('public'): - self.timeline_generator = api.public_timeline_generator( - self.app, self.user, local=self.timeline.name.startswith('local'), limit=40) - elif self.timeline.name == 'notifications': - self.timeline_generator = api.notification_timeline_generator( - self.app, self.user, limit=40) - elif self.timeline.name == 'conversations': - self.timeline_generator = api.conversation_timeline_generator( - self.app, self.user, limit=40) - else: - # default to home timeline - self.timeline_generator = api.home_timeline_generator( - self.app, self.user, limit=40) - - self.async_load_timeline(is_initial=True, timeline_name=self.timeline.name) + self.refresh_timeline() elif key == 'esc': if self.overlay: