From d43383bed1c939dcbc8c22e7d1c1b97b20826a1b Mon Sep 17 00:00:00 2001 From: Ren Amamiya Date: Thu, 12 Mar 2026 16:49:57 +0700 Subject: [PATCH] update room kind on new message --- crates/chat/src/lib.rs | 10 ++++++++++ crates/chat/src/room.rs | 12 +++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/crates/chat/src/lib.rs b/crates/chat/src/lib.rs index 10528a7..8eeea4c 100644 --- a/crates/chat/src/lib.rs +++ b/crates/chat/src/lib.rs @@ -613,9 +613,19 @@ impl ChatRegistry { /// If the room doesn't exist, it will be created. /// Updates room ordering based on the most recent messages. pub fn new_message(&mut self, message: NewMessage, cx: &mut Context) { + let nostr = NostrRegistry::global(cx); + let signer = nostr.read(cx).signer(); + match self.rooms.iter().find(|e| e.read(cx).id == message.room) { Some(room) => { room.update(cx, |this, cx| { + if this.kind == RoomKind::Request { + if let Some(public_key) = signer.public_key() { + if message.rumor.pubkey == public_key { + this.set_ongoing(cx); + } + } + } this.push_message(message, cx); }); self.sort(cx); diff --git a/crates/chat/src/room.rs b/crates/chat/src/room.rs index 448eda8..efbf095 100644 --- a/crates/chat/src/room.rs +++ b/crates/chat/src/room.rs @@ -57,7 +57,11 @@ impl SendReport { /// Returns true if the send is pending. pub fn pending(&self) -> bool { - self.output.is_none() && self.error.is_none() + self.error.is_none() + && self + .output + .as_ref() + .is_some_and(|o| o.success.is_empty() && o.failed.is_empty()) } /// Returns true if the send was successful. @@ -228,10 +232,8 @@ impl Room { /// Sets this room is ongoing conversation pub fn set_ongoing(&mut self, cx: &mut Context) { - if self.kind != RoomKind::Ongoing { - self.kind = RoomKind::Ongoing; - cx.notify(); - } + self.kind = RoomKind::Ongoing; + cx.notify(); } /// Updates the creation timestamp of the room