Skip to content

Commit 4055363

Browse files
committed
fix(core/database): fetch users mentioned in system messages
1 parent d179d1e commit 4055363

File tree

1 file changed

+29
-1
lines changed
  • crates/core/database/src/models/messages

1 file changed

+29
-1
lines changed

crates/core/database/src/models/messages/model.rs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,35 @@ impl Message {
504504
if let Some(true) = include_users {
505505
let user_ids = messages
506506
.iter()
507-
.map(|m| m.author.clone())
507+
.flat_map(|m| {
508+
let mut users = vec![m.author.clone()];
509+
if let Some(system) = &m.system {
510+
match system {
511+
v0::SystemMessage::ChannelDescriptionChanged { by } => {
512+
users.push(by.clone())
513+
}
514+
v0::SystemMessage::ChannelIconChanged { by } => users.push(by.clone()),
515+
v0::SystemMessage::ChannelOwnershipChanged { from, to, .. } => {
516+
users.push(from.clone());
517+
users.push(to.clone())
518+
}
519+
v0::SystemMessage::ChannelRenamed { by, .. } => users.push(by.clone()),
520+
v0::SystemMessage::UserAdded { by, id, .. }
521+
| v0::SystemMessage::UserRemove { by, id, .. } => {
522+
users.push(by.clone());
523+
users.push(id.clone());
524+
}
525+
v0::SystemMessage::UserBanned { id, .. }
526+
| v0::SystemMessage::UserKicked { id, .. }
527+
| v0::SystemMessage::UserJoined { id, .. }
528+
| v0::SystemMessage::UserLeft { id, .. } => {
529+
users.push(id.clone());
530+
}
531+
v0::SystemMessage::Text { .. } => {}
532+
}
533+
}
534+
users
535+
})
508536
.collect::<HashSet<String>>()
509537
.into_iter()
510538
.collect::<Vec<String>>();

0 commit comments

Comments
 (0)