1
0
forked from iarv/contact

Compare commits

...

3 Commits

Author SHA1 Message Date
pdxlocations
415d2bbda5 update lines and cols 2025-07-28 23:03:25 -07:00
pdxlocations
12d98ca999 add comment 2025-07-28 22:51:24 -07:00
pdxlocations
07f5889f74 Warn About 2-Second Message Delay 2025-07-28 22:36:29 -07:00
3 changed files with 11 additions and 1 deletions

View File

@@ -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.",
)

View File

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

View File

@@ -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])