Update matrix_sdk to v0.18.0 and implement message pinning

This commit is contained in:
mirsal committed 2026-09-17 11:22:29 +00:00
1 parent 982fb7e091
commit 19877c0ac4
4 files changed
+909 -320

No files matched your search

+32 -9
View File
@@ -18,16 +18,20 @@
*/
use matrix_sdk::{
matrix_auth::{
MatrixAuth,
MatrixSession,
MatrixSessionTokens
authentication::{
matrix::{
MatrixAuth,
MatrixSession,
},
SessionTokens,
},
SessionMeta,
store::RoomLoadSettings,
config::SyncSettings,
ruma::events::room::{
member::StrippedRoomMemberEvent,
message::RoomMessageEventContent
message::RoomMessageEventContent,
pinned_events::RoomPinnedEventsEventContent,
},
ruma::{RoomId, OwnedUserId, device_id},
Client, Room
@@ -41,7 +45,7 @@ use tokio::{
use std::sync::Arc;
use tracing::{error, info};
use tracing::{error, info, debug};
use std::error::Error;
use crate::config::AuthConfig;
@@ -86,7 +90,25 @@ async fn send_to_room(
match room.client().join_room_by_id(room.room_id()).await {
Ok(_) => {
info!("Posting to room {}", room.room_id());
room.send(RoomMessageEventContent::text_html(msg.clone(), msg)).await?;
let res = room.send(RoomMessageEventContent::text_html(msg.clone(), msg)).await?;
debug!("Retrieving list of pinned events");
let mut old_pinned_eids = room.pinned_event_ids().unwrap_or(Vec::new());
let mut new_pinned_eids = Vec::with_capacity(old_pinned_eids.len());
for eid in old_pinned_eids.drain(..) {
if let Ok(e) = room.event(eid.as_ref(), None).await {
let client = room.client();
if client.user_id() != e.sender().as_deref() {
new_pinned_eids.push(eid);
}
}
}
info!("Updating pinned events");
new_pinned_eids.push(res.response.event_id);
room.send_state_event(RoomPinnedEventsEventContent::new(new_pinned_eids)).await?;
Ok(())
},
@@ -114,11 +136,12 @@ async fn login(
user_id: <OwnedUserId>::try_from(user_id.as_str())?,
device_id: device_id!(device_id.as_str()).to_owned(),
},
tokens: MatrixSessionTokens {
tokens: SessionTokens {
access_token: access_token.to_owned(),
refresh_token: None,
}
}
},
RoomLoadSettings::All
).await?;
},
}