fix(chat): attribute moderation events to the acting user
ZhenYi committed
Modified lib/chat/src/services/messages.rs lib/chat/src/services/messages.rs +3 −0 View lib/chat/src/services/messages.rs
@@ -1245,12 +1245,14 @@
12451245 RoomEvent::MessageDeleted {
12461246 room_id,
12471247 seq,
1248 user_id: caller,
12481249 message_id: first_id,
12491250 }
12501251 } else {
12511252 RoomEvent::MessagesDeleted {
12521253 room_id,
12531254 seq,
1255 user_id: caller,
12541256 message_ids: row_ids.clone(),
12551257 }
12561258 };
@@ -1327,6 +1329,7 @@
13271329 let event = RoomEvent::MessagePinned {
13281330 room_id,
13291331 seq,
1332 user_id: caller,
13301333 message_id,
13311334 pinned: cmd.pinned,
13321335 };
Modified lib/chat/src/services/reactions.rs lib/chat/src/services/reactions.rs +1 −0 View lib/chat/src/services/reactions.rs
@@ -152,6 +152,7 @@
152152 let value = serde_json::to_value(&shared)?;
153153 let event = RoomEvent::ReactionUpdated {
154154 room_id,
155 user_id: viewer,
155156 message_id,
156157 reactions: value,
157158 };
Modified lib/chat/src/share/events.rs lib/chat/src/share/events.rs +8 −3 View lib/chat/src/share/events.rs
@@ -64,7 +64,11 @@
6464 RoomEvent::Typing { user_id, .. }
6565 | RoomEvent::MemberJoined { user_id, .. }
6666 | RoomEvent::MemberLeft { user_id, .. }
67 | RoomEvent::VoiceModeration { user_id, .. } => Some(*user_id),
67 | RoomEvent::VoiceModeration { user_id, .. }
68 | RoomEvent::MessageDeleted { user_id, .. }
69 | RoomEvent::MessagesDeleted { user_id, .. }
70 | RoomEvent::MessagePinned { user_id, .. }
71 | RoomEvent::ReactionUpdated { user_id, .. } => Some(*user_id),
6872 RoomEvent::MessagePublished { message, .. } | RoomEvent::MessageEdited { message, .. } => {
6973 message.get("author_id").and_then(Value::as_i64)
7074 }
@@ -76,6 +80,7 @@
7680 let mut labels = queue::Labels::new().with("room_id", event.room_id());
7781 if let Some(actor) = room_actor(event) {
7882 labels.insert("user_id", actor);
83 labels.insert(events::label::ACTOR_USER_ID, actor);
7984 }
8085 if let Some(message_id) = room_message_id(event) {
8186 labels.insert("message_id", message_id);
@@ -104,7 +109,7 @@
104109 payload["message"] = message;
105110 }
106111
107 events::emit(database.write(), room_kind(event), labels, &payload).await?;
112 events::emit_retry(database.write(), room_kind(event), labels, &payload).await?;
108113 Ok(())
109114}
110115
@@ -147,7 +152,7 @@
147152 payload["message"] = message;
148153 }
149154
150 events::emit(database.write(), kind, labels, &payload).await?;
155 events::emit_retry(database.write(), kind, labels, &payload).await?;
151156 Ok(())
152157}
153158
Modified lib/chat/src/share/realtime.rs lib/chat/src/share/realtime.rs +4 −0 View lib/chat/src/share/realtime.rs
@@ -17,21 +17,25 @@
1717 MessageDeleted {
1818 room_id: Uuid,
1919 seq: i64,
20 user_id: i64,
2021 message_id: Uuid,
2122 },
2223 MessagesDeleted {
2324 room_id: Uuid,
2425 seq: i64,
26 user_id: i64,
2527 message_ids: Vec<Uuid>,
2628 },
2729 MessagePinned {
2830 room_id: Uuid,
2931 seq: i64,
32 user_id: i64,
3033 message_id: Uuid,
3134 pinned: bool,
3235 },
3336 ReactionUpdated {
3437 room_id: Uuid,
38 user_id: i64,
3539 message_id: Uuid,
3640 reactions: serde_json::Value,
3741 },