Extract refresh timeline code

This commit is contained in:
Ivan Habunek 2023-03-13 13:37:02 +01:00
parent 9999d975b4
commit 71a2520198
No known key found for this signature in database
GPG Key ID: CDBD63C43A30BB95
1 changed files with 28 additions and 22 deletions

View File

@ -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: