1
0
mirror of https://github.com/ihabunek/toot.git synced 2024-06-16 06:15:25 +00:00

Ditch status index list for now

Simplifies things, makes update_status slightly slower, but no biggie.
This commit is contained in:
Ivan Habunek 2019-08-27 12:57:18 +02:00
parent 366e9382d3
commit 4f30c177d6
No known key found for this signature in database
GPG Key ID: CDBD63C43A30BB95
2 changed files with 13 additions and 19 deletions

View File

@ -191,7 +191,7 @@ class TUI(urwid.Frame):
def _done_next(statuses):
"""Process sequential batch of statuses, adds statuses to the
existing timeline."""
self.timeline.add_statuses(statuses)
self.timeline.append_statuses(statuses)
self.run_in_thread(_load_statuses,
done_callback=_done_initial if is_initial else _done_next)

View File

@ -27,11 +27,6 @@ class Timeline(urwid.Columns):
self.status_list = self.build_status_list(statuses)
self.status_details = StatusDetails(statuses[0])
# Maps status ID to its index in the list
self.status_index_map = {
status.id: n for n, status in enumerate(statuses)
}
super().__init__([
("weight", 40, self.status_list),
("weight", 60, self.status_details),
@ -110,30 +105,29 @@ class Timeline(urwid.Columns):
return super().keypress(size, key)
def add_status(self, status):
def append_status(self, status):
self.statuses.append(status)
self.status_index_map[status.id] = len(self.statuses) - 1
self.status_list.body.append(self.build_list_item(status))
def prepend_status(self, status):
self.statuses.insert(0, status)
# Need to rebuild the map, there has to be a better way
self.status_index_map = {
status.id: n for n, status in enumerate(self.statuses)
}
self.status_list.body.insert(0, self.build_list_item(status))
if self.status_list.body.focus == 0:
self.draw_status_details(status)
def add_statuses(self, statuses):
def append_statuses(self, statuses):
for status in statuses:
self.add_status(status)
self.append_status(status)
def get_status_index(self, id):
# TODO: This is suboptimal, consider a better way
for n, status in enumerate(self.statuses):
if status.id == id:
return n
raise ValueError("Status with ID {} not found".format(id))
def update_status(self, status):
"""Overwrite status in list with the new instance and redraw."""
index = self.status_index_map[status.id]
assert self.statuses[index].id == status.id
index = self.get_status_index(status.id)
assert self.statuses[index].id == status.id # Sanity check
# Update internal status list
self.statuses[index] = status