From 4055363cff8a892b983ba7afde3245e88a2b41ce Mon Sep 17 00:00:00 2001 From: Paul Makles Date: Sat, 15 Jun 2024 11:02:09 +0100 Subject: [PATCH] fix(core/database): fetch users mentioned in system messages --- .../database/src/models/messages/model.rs | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/crates/core/database/src/models/messages/model.rs b/crates/core/database/src/models/messages/model.rs index 373cf222..b23ef488 100644 --- a/crates/core/database/src/models/messages/model.rs +++ b/crates/core/database/src/models/messages/model.rs @@ -504,7 +504,35 @@ impl Message { if let Some(true) = include_users { let user_ids = messages .iter() - .map(|m| m.author.clone()) + .flat_map(|m| { + let mut users = vec![m.author.clone()]; + if let Some(system) = &m.system { + match system { + v0::SystemMessage::ChannelDescriptionChanged { by } => { + users.push(by.clone()) + } + v0::SystemMessage::ChannelIconChanged { by } => users.push(by.clone()), + v0::SystemMessage::ChannelOwnershipChanged { from, to, .. } => { + users.push(from.clone()); + users.push(to.clone()) + } + v0::SystemMessage::ChannelRenamed { by, .. } => users.push(by.clone()), + v0::SystemMessage::UserAdded { by, id, .. } + | v0::SystemMessage::UserRemove { by, id, .. } => { + users.push(by.clone()); + users.push(id.clone()); + } + v0::SystemMessage::UserBanned { id, .. } + | v0::SystemMessage::UserKicked { id, .. } + | v0::SystemMessage::UserJoined { id, .. } + | v0::SystemMessage::UserLeft { id, .. } => { + users.push(id.clone()); + } + v0::SystemMessage::Text { .. } => {} + } + } + users + }) .collect::>() .into_iter() .collect::>();