retronews

a featureful fork of the luke8086/retronews hn+lobste.rs tui
Log | Files | Refs | README | LICENSE

commit 667dc3520490c74a42babab193f608136e0bf65c
parent 0bec99741a480ccd70bd1b101d5fc63216d47da9
Author: Marcus Dillavou <line72@line72.net>
Date:   Fri, 13 Sep 2024 14:57:01 -0500

Add cmds to jump to the prev/next sibling and to make the current thread a read

Diffstat:
Mretronews.py | 33+++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+), 0 deletions(-)

diff --git a/retronews.py b/retronews.py @@ -716,6 +716,39 @@ def cmd_next_unread(app: AppState) -> None: if message is not None: app_select_message(app, message) +def cmd_next_sibling(app: AppState) -> None: + if (msg := app.selected_message) is not None and (parent_msg := msg.parent) is not None: + # find the next sibling + try: + idx = parent_msg.children.index(msg) + if idx < len(parent_msg.children): + app_select_message(app, parent_msg.children[idx+1]) + except IndexError: + pass + +def cmd_prev_sibling(app: AppState) -> None: + if (msg := app.selected_message) is not None and (parent_msg := msg.parent) is not None: + # find the previous sibling + try: + idx = parent_msg.children.index(msg) + if idx > 0: + app_select_message(app, parent_msg.children[idx-1]) + except IndexError: + pass + +def cmd_mark_thread_as_read(app: AppState) -> None: + # recursively mark us and all children as read + # then jump to the next sibling + def iterate(message): + if message != None: + for child in message.children: + child.flags.read = True + db_save_message(app.db, msg) + iterate(child) + if (msg := app.selected_message) is not None: + iterate(msg) + # jump to the next sibling + cmd_next_sibling(app) def cmd_parent(app: AppState) -> None: if (msg := app.selected_message) is not None and (parent_msg := msg.parent) is not None: