aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
authorGravatar lancebord 2026-03-10 11:07:44 -0400
committerGravatar lancebord 2026-03-10 11:07:44 -0400
commite9d9766d72740c7d7c9918b4839f3379f57cd6ef (patch)
tree3694b83845354af116a77f66ed22931d2d11536e /src/main.rs
parenthandle window resize events since draw is event driven now (diff)
merge consecutive join/part messages
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs29
1 files changed, 8 insertions, 21 deletions
diff --git a/src/main.rs b/src/main.rs
index 9a5a69b..d788553 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -96,9 +96,9 @@ async fn run(
let sender = client.sender();
let (tx, mut rx) = mpsc::unbounded_channel::<AppEvent>();
+
// Spawn keyboard task — blocks on crossterm's async read,
// zero CPU until a key is actually pressed
-
let kb_tx = tx.clone();
tokio::spawn(async move {
loop {
@@ -260,11 +260,11 @@ fn handle_irc_event(event: IrcEvent, app: &mut AppState) {
app.push_system(&format!("Connected to {} as {}", server, nick));
}
- IrcEvent::Joined { channel, nick } => {
+ IrcEvent::Joined { nick } => {
if nick == app.nick {
- app.push_system(&format!("You joined {}", channel));
+ app.push_join_leave(&format!("+{}", nick));
} else {
- app.push_system(&format!("{} joined {}", nick, channel));
+ app.push_join_leave(&format!("+{}", nick));
app.members.push(nick);
app.sort_members();
}
@@ -292,33 +292,20 @@ fn handle_irc_event(event: IrcEvent, app: &mut AppState) {
app.push_system(text.as_str());
}
- IrcEvent::Parted {
- channel,
- nick,
- reason,
- } => {
+ IrcEvent::Parted { nick } => {
app.members.retain(|m| {
let bare = m.trim_start_matches(&['@', '+', '%'][..]);
bare != nick
});
- app.push_system(&format!(
- "{} left {}{}",
- nick,
- channel,
- reason.map(|r| format!(" ({})", r)).unwrap_or_default()
- ));
+ app.push_join_leave(&format!("-{}", nick,));
}
- IrcEvent::Quit { nick, reason } => {
+ IrcEvent::Quit { nick } => {
app.members.retain(|m| {
let bare = m.trim_start_matches(&['@', '+', '%'][..]);
bare != nick
});
- app.push_system(&format!(
- "{} quit{}",
- nick,
- reason.map(|r| format!(" ({})", r)).unwrap_or_default()
- ));
+ app.push_join_leave(&format!("-{}", nick,));
}
IrcEvent::NickChanged { old_nick, new_nick } => {