diff --git a/data/src/client.rs b/data/src/client.rs index 7d0cb200f..14fd64434 100644 --- a/data/src/client.rs +++ b/data/src/client.rs @@ -28,7 +28,7 @@ pub enum State { #[derive(Debug)] pub enum Brodcast { Quit(User, Option), - Nickname(User, String, bool), + Nickname(String, String, bool), } #[derive(Debug)] @@ -95,10 +95,9 @@ impl Connection { self.resolved_nick = Some(nick.clone()); } - let user = message.user()?; return Some(Event::Brodcast(Brodcast::Nickname( - user, nick.clone(), + old_nick.clone(), changed_own_nickname, ))); } diff --git a/data/src/history/manager.rs b/data/src/history/manager.rs index 15c4fe757..212043a64 100644 --- a/data/src/history/manager.rs +++ b/data/src/history/manager.rs @@ -284,17 +284,21 @@ impl Manager { message::broadcast::quit(user_channels, user_query, &user, &comment) } Broadcast::Nickname { - user, new_nick, + old_nick, changed_own_nickname, user_channels, } => { - let user_query = queries.find(|nick| user.nickname() == *nick); + let user_query = queries.find(|nick| { + let old_nick = NickRef::from(old_nick.as_str()); + old_nick == *nick + }); + message::broadcast::nickname( user_channels, user_query, - &user, &new_nick, + &old_nick, changed_own_nickname, ) } @@ -468,8 +472,8 @@ pub enum Broadcast { user_channels: Vec, }, Nickname { - user: User, new_nick: String, + old_nick: String, changed_own_nickname: bool, user_channels: Vec, }, diff --git a/data/src/message.rs b/data/src/message.rs index 5d2c7dcd6..e8ad613b8 100644 --- a/data/src/message.rs +++ b/data/src/message.rs @@ -431,14 +431,14 @@ pub(crate) mod broadcast { pub fn nickname( channels: impl IntoIterator, queries: impl IntoIterator, - user: &User, new_nick: &str, + old_nick: &str, changed_own_nickname: bool, ) -> Vec { let text = if changed_own_nickname { format!(" ∙ You're now known as {new_nick}") } else { - format!(" ∙ {user} is now known as {new_nick}") + format!(" ∙ {old_nick} is now known as {new_nick}") }; expand(channels, queries, false, text) diff --git a/src/main.rs b/src/main.rs index 1c9ea683e..fdd2ca8ed 100644 --- a/src/main.rs +++ b/src/main.rs @@ -337,18 +337,18 @@ impl Application for Halloy { ); } data::client::Brodcast::Nickname( - user, new_nick, + old_nick, changed_own_nickname, ) => { let user_channels = self .clients - .get_user_channels(&server, user.nickname()); + .get_user_channels(&server, old_nick.as_str().into()); dashboard.broadcast_nickname( &server, - user, new_nick, + old_nick, changed_own_nickname, user_channels, ); diff --git a/src/screen/dashboard.rs b/src/screen/dashboard.rs index a312ab617..cb0d3a328 100644 --- a/src/screen/dashboard.rs +++ b/src/screen/dashboard.rs @@ -516,16 +516,16 @@ impl Dashboard { pub fn broadcast_nickname( &mut self, server: &Server, - user: User, new_nick: String, + old_nick: String, changed_own_nickname: bool, user_channels: Vec, ) { self.history.broadcast( server, Broadcast::Nickname { - user, new_nick, + old_nick, changed_own_nickname, user_channels, },