From 8d111c5df77079bf2c60a949a2aa54b2c7709af9 Mon Sep 17 00:00:00 2001 From: pdxlocations <117498748+pdxlocations@users.noreply.github.com> Date: Mon, 28 Jul 2025 23:04:57 -0700 Subject: [PATCH] Add Warning for Sending Messages Quickly (#212) * Warn About 2-Second Message Delay * add comment * update lines and cols --- contact/ui/contact_ui.py | 9 ++++++++- contact/ui/dialog.py | 2 ++ contact/ui/ui_state.py | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/contact/ui/contact_ui.py b/contact/ui/contact_ui.py index 7ce41c0..a0adf59 100644 --- a/contact/ui/contact_ui.py +++ b/contact/ui/contact_ui.py @@ -1,5 +1,6 @@ import curses import logging +import time import traceback from typing import Union @@ -320,10 +321,15 @@ def handle_enter(input_text: str) -> str: return input_text elif len(input_text) > 0: + # TODO: This is a hack to prevent sending messages too quickly. Let's get errors from the node. + now = time.monotonic() + if now - ui_state.last_sent_time < 2.5: + contact.ui.dialog.dialog("Slow down", "Please wait 2 seconds between messages.") + return input_text # Enter key pressed, send user input as message send_message(input_text, channel=ui_state.selected_channel) draw_messages_window(True) - + ui_state.last_sent_time = now # Clear entry window and reset input text entry_win.erase() return "" @@ -335,6 +341,7 @@ def handle_ctrl_t(stdscr: curses.window) -> None: send_traceroute() curses.curs_set(0) # Hide cursor contact.ui.dialog.dialog( + stdscr, f"Traceroute Sent To: {get_name_from_database(ui_state.node_list[ui_state.selected_node])}", "Results will appear in messages window.\nNote: Traceroute is limited to once every 30 seconds.", ) diff --git a/contact/ui/dialog.py b/contact/ui/dialog.py index 3dd09ce..42823d3 100644 --- a/contact/ui/dialog.py +++ b/contact/ui/dialog.py @@ -3,7 +3,9 @@ from contact.ui.colors import get_color def dialog(title: str, message: str) -> None: + """Display a dialog with a title and message.""" + curses.update_lines_cols() height, width = curses.LINES, curses.COLS # Calculate dialog dimensions diff --git a/contact/ui/ui_state.py b/contact/ui/ui_state.py index 7754322..80f9278 100644 --- a/contact/ui/ui_state.py +++ b/contact/ui/ui_state.py @@ -24,6 +24,7 @@ class ChatUIState: selected_message: int = 0 selected_node: int = 0 current_window: int = 0 + last_sent_time: float = 0.0 selected_index: int = 0 start_index: List[int] = field(default_factory=lambda: [0, 0, 0])