Redact more events

This commit is contained in:
2025-11-21 09:35:21 +01:00
parent 24f06a78a9
commit 751e3b8654
4 changed files with 94 additions and 8 deletions

View File

@@ -7,7 +7,9 @@ use crate::matrix_connection::matrix_client::MatrixClient;
use crate::matrix_connection::matrix_manager::MatrixManagerMsg;
use futures_util::StreamExt;
use matrix_sdk::Room;
use matrix_sdk::ruma::events::reaction::OriginalSyncReactionEvent;
use matrix_sdk::ruma::events::room::message::OriginalSyncRoomMessageEvent;
use matrix_sdk::ruma::events::room::redaction::OriginalSyncRoomRedactionEvent;
use ractor::ActorRef;
#[derive(Clone, Debug, Eq, PartialEq)]
@@ -48,19 +50,49 @@ async fn sync_thread_task(
let mut sync_stream = client.sync_stream().await;
let mut handlers = vec![];
let tx_msg_handle = tx.clone();
let user = client.email.clone();
let room_message_handle = client.add_event_handler(
let user_msg_handle = client.email.clone();
handlers.push(client.add_event_handler(
async move |event: OriginalSyncRoomMessageEvent, room: Room| {
if let Err(e) = tx_msg_handle.send(BroadcastMessage::RoomMessageEvent {
user: user.clone(),
user: user_msg_handle.clone(),
event: Box::new(event),
room,
}) {
log::warn!("Failed to forward room event! {e}");
log::warn!("Failed to forward room message event! {e}");
}
},
);
));
let tx_reac_handle = tx.clone();
let user_reac_handle = client.email.clone();
handlers.push(client.add_event_handler(
async move |event: OriginalSyncReactionEvent, room: Room| {
if let Err(e) = tx_reac_handle.send(BroadcastMessage::ReactionEvent {
user: user_reac_handle.clone(),
event: Box::new(event),
room,
}) {
log::warn!("Failed to forward reaction event! {e}");
}
},
));
let tx_redac_handle = tx.clone();
let user_redac_handle = client.email.clone();
handlers.push(client.add_event_handler(
async move |event: OriginalSyncRoomRedactionEvent, room: Room| {
if let Err(e) = tx_redac_handle.send(BroadcastMessage::RoomRedactionEvent {
user: user_redac_handle.clone(),
event: Box::new(event),
room,
}) {
log::warn!("Failed to forward reaction event! {e}");
}
},
));
loop {
tokio::select! {
@@ -103,7 +135,9 @@ async fn sync_thread_task(
}
}
client.remove_event_handler(room_message_handle);
for h in handlers {
client.remove_event_handler(h);
}
// Notify manager about termination, so this thread can be removed from the list
log::info!("Sync thread {id:?} terminated!");