Upgrade Matrix SDK to 0.14 (#521)
This commit is contained in:
418
Cargo.lock
generated
418
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -11,7 +11,7 @@ license = "Apache-2.0"
|
||||
exclude = [".github", "CONTRIBUTING.md"]
|
||||
keywords = ["matrix", "chat", "tui", "vim"]
|
||||
categories = ["command-line-utilities"]
|
||||
rust-version = "1.85"
|
||||
rust-version = "1.88"
|
||||
build = "build.rs"
|
||||
|
||||
[features]
|
||||
@@ -90,7 +90,7 @@ version = "0.0.24"
|
||||
#rev = "e40dbb0bfeabe4cfd08facd2acb446080a330d75"
|
||||
|
||||
[dependencies.matrix-sdk]
|
||||
version = "0.13.0"
|
||||
version = "0.14.0"
|
||||
default-features = false
|
||||
features = ["e2e-encryption", "sqlite", "sso-login"]
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
[toolchain]
|
||||
channel = "1.85"
|
||||
channel = "1.88"
|
||||
components = [ "clippy" ]
|
||||
|
||||
14
src/base.rs
14
src/base.rs
@@ -13,6 +13,7 @@ use std::time::{Duration, Instant};
|
||||
|
||||
use emojis::Emoji;
|
||||
use matrix_sdk::ruma::events::receipt::ReceiptThread;
|
||||
use matrix_sdk::ruma::room_version_rules::RedactionRules;
|
||||
use ratatui::{
|
||||
buffer::Buffer,
|
||||
layout::{Alignment, Rect},
|
||||
@@ -57,7 +58,6 @@ use matrix_sdk::{
|
||||
OwnedRoomId,
|
||||
OwnedUserId,
|
||||
RoomId,
|
||||
RoomVersionId,
|
||||
UserId,
|
||||
},
|
||||
RoomState as MatrixRoomState,
|
||||
@@ -785,6 +785,10 @@ pub enum IambError {
|
||||
#[error("Invalid room alias id: {0}")]
|
||||
InvalidRoomAliasId(#[from] matrix_sdk::ruma::IdParseError),
|
||||
|
||||
/// An invalid space child order was specified.
|
||||
#[error("Invalid space child order: {0}")]
|
||||
InvalidSpaceChildOrder(matrix_sdk::ruma::IdParseError),
|
||||
|
||||
/// A failure occurred during verification.
|
||||
#[error("Verification request error: {0}")]
|
||||
VerificationRequestError(#[from] matrix_sdk::encryption::identities::RequestVerificationError),
|
||||
@@ -1025,7 +1029,7 @@ impl RoomInfo {
|
||||
self.messages.get_mut(self.keys.get(event_id)?.to_message_key()?)
|
||||
}
|
||||
|
||||
pub fn redact(&mut self, ev: OriginalSyncRoomRedactionEvent, room_version: &RoomVersionId) {
|
||||
pub fn redact(&mut self, ev: OriginalSyncRoomRedactionEvent, rules: &RedactionRules) {
|
||||
let Some(redacts) = &ev.redacts else {
|
||||
return;
|
||||
};
|
||||
@@ -1035,20 +1039,20 @@ impl RoomInfo {
|
||||
Some(EventLocation::State(key)) => {
|
||||
if let Some(msg) = self.messages.get_mut(key) {
|
||||
let ev = SyncRoomRedactionEvent::Original(ev);
|
||||
msg.redact(ev, room_version);
|
||||
msg.redact(ev, rules);
|
||||
}
|
||||
},
|
||||
Some(EventLocation::Message(None, key)) => {
|
||||
if let Some(msg) = self.messages.get_mut(key) {
|
||||
let ev = SyncRoomRedactionEvent::Original(ev);
|
||||
msg.redact(ev, room_version);
|
||||
msg.redact(ev, rules);
|
||||
}
|
||||
},
|
||||
Some(EventLocation::Message(Some(root), key)) => {
|
||||
if let Some(thread) = self.threads.get_mut(root) {
|
||||
if let Some(msg) = thread.get_mut(key) {
|
||||
let ev = SyncRoomRedactionEvent::Original(ev);
|
||||
msg.redact(ev, room_version);
|
||||
msg.redact(ev, rules);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -11,6 +11,7 @@ use std::ops::{Deref, DerefMut};
|
||||
use chrono::{DateTime, Local as LocalTz};
|
||||
use humansize::{format_size, DECIMAL};
|
||||
use matrix_sdk::ruma::events::receipt::ReceiptThread;
|
||||
use matrix_sdk::ruma::room_version_rules::RedactionRules;
|
||||
use serde_json::json;
|
||||
use unicode_width::UnicodeWidthStr;
|
||||
|
||||
@@ -43,7 +44,6 @@ use matrix_sdk::ruma::{
|
||||
MilliSecondsSinceUnixEpoch,
|
||||
OwnedEventId,
|
||||
OwnedUserId,
|
||||
RoomVersionId,
|
||||
UInt,
|
||||
};
|
||||
|
||||
@@ -511,7 +511,7 @@ impl MessageEvent {
|
||||
}
|
||||
}
|
||||
|
||||
fn redact(&mut self, redaction: SyncRoomRedactionEvent, version: &RoomVersionId) {
|
||||
fn redact(&mut self, redaction: SyncRoomRedactionEvent, rules: &RedactionRules) {
|
||||
match self {
|
||||
MessageEvent::EncryptedOriginal(_) => return,
|
||||
MessageEvent::EncryptedRedacted(_) => return,
|
||||
@@ -520,7 +520,7 @@ impl MessageEvent {
|
||||
MessageEvent::Local(_, _) => return,
|
||||
MessageEvent::Original(ev) => {
|
||||
let redacted = RedactedRoomMessageEvent {
|
||||
content: ev.content.clone().redact(version),
|
||||
content: ev.content.clone().redact(rules),
|
||||
event_id: ev.event_id.clone(),
|
||||
sender: ev.sender.clone(),
|
||||
origin_server_ts: ev.origin_server_ts,
|
||||
@@ -581,7 +581,11 @@ fn body_cow_content(content: &RoomMessageEventContent) -> Cow<'_, str> {
|
||||
}
|
||||
|
||||
fn body_cow_reason(unsigned: &RedactedUnsigned) -> Cow<'_, str> {
|
||||
let reason = unsigned.redacted_because.content.reason.as_ref();
|
||||
let reason = unsigned
|
||||
.redacted_because
|
||||
.deserialize()
|
||||
.ok()
|
||||
.and_then(|ev| ev.content.reason);
|
||||
|
||||
if let Some(r) = reason {
|
||||
Cow::Owned(format!("[Redacted: {r:?}]"))
|
||||
@@ -1135,8 +1139,8 @@ impl Message {
|
||||
Span::styled(sender, style).into()
|
||||
}
|
||||
|
||||
pub fn redact(&mut self, redaction: SyncRoomRedactionEvent, version: &RoomVersionId) {
|
||||
self.event.redact(redaction, version);
|
||||
pub fn redact(&mut self, redaction: SyncRoomRedactionEvent, rules: &RedactionRules) {
|
||||
self.event.redact(redaction, rules);
|
||||
self.html = None;
|
||||
self.downloaded = false;
|
||||
self.image_preview = ImageStatus::None;
|
||||
|
||||
@@ -49,7 +49,8 @@ use crate::{
|
||||
const TEST_ROOM1_ALIAS: &str = "#room1:example.com";
|
||||
|
||||
lazy_static! {
|
||||
pub static ref TEST_ROOM1_ID: OwnedRoomId = RoomId::new(server_name!("example.com")).to_owned();
|
||||
pub static ref TEST_ROOM1_ID: OwnedRoomId =
|
||||
RoomId::new_v1(server_name!("example.com")).to_owned();
|
||||
pub static ref TEST_USER1: OwnedUserId = user_id!("@user1:example.com").to_owned();
|
||||
pub static ref TEST_USER2: OwnedUserId = user_id!("@user2:example.com").to_owned();
|
||||
pub static ref TEST_USER3: OwnedUserId = user_id!("@user3:example.com").to_owned();
|
||||
|
||||
@@ -1673,7 +1673,7 @@ mod tests {
|
||||
let server = server_name!("example.com");
|
||||
|
||||
let room1 = TestRoomItem {
|
||||
room_id: RoomId::new(server).to_owned(),
|
||||
room_id: RoomId::new_v1(server).to_owned(),
|
||||
tags: vec![TagName::Favorite],
|
||||
alias: Some(room_alias_id!("#room1:example.com").to_owned()),
|
||||
name: "Z",
|
||||
@@ -1682,7 +1682,7 @@ mod tests {
|
||||
};
|
||||
|
||||
let room2 = TestRoomItem {
|
||||
room_id: RoomId::new(server).to_owned(),
|
||||
room_id: RoomId::new_v1(server).to_owned(),
|
||||
tags: vec![],
|
||||
alias: Some(room_alias_id!("#a:example.com").to_owned()),
|
||||
name: "Unnamed Room",
|
||||
@@ -1691,7 +1691,7 @@ mod tests {
|
||||
};
|
||||
|
||||
let room3 = TestRoomItem {
|
||||
room_id: RoomId::new(server).to_owned(),
|
||||
room_id: RoomId::new_v1(server).to_owned(),
|
||||
tags: vec![],
|
||||
alias: None,
|
||||
name: "Cool Room",
|
||||
@@ -1739,7 +1739,7 @@ mod tests {
|
||||
let server = server_name!("example.com");
|
||||
|
||||
let room1 = TestRoomItem {
|
||||
room_id: RoomId::new(server).to_owned(),
|
||||
room_id: RoomId::new_v1(server).to_owned(),
|
||||
tags: vec![],
|
||||
alias: None,
|
||||
name: "Room 1",
|
||||
@@ -1748,7 +1748,7 @@ mod tests {
|
||||
};
|
||||
|
||||
let room2 = TestRoomItem {
|
||||
room_id: RoomId::new(server).to_owned(),
|
||||
room_id: RoomId::new_v1(server).to_owned(),
|
||||
tags: vec![],
|
||||
alias: None,
|
||||
name: "Room 2",
|
||||
@@ -1760,7 +1760,7 @@ mod tests {
|
||||
};
|
||||
|
||||
let room3 = TestRoomItem {
|
||||
room_id: RoomId::new(server).to_owned(),
|
||||
room_id: RoomId::new_v1(server).to_owned(),
|
||||
tags: vec![],
|
||||
alias: None,
|
||||
name: "Room 3",
|
||||
@@ -1791,7 +1791,7 @@ mod tests {
|
||||
let server = server_name!("example.com");
|
||||
|
||||
let room1 = TestRoomItem {
|
||||
room_id: RoomId::new(server).to_owned(),
|
||||
room_id: RoomId::new_v1(server).to_owned(),
|
||||
tags: vec![],
|
||||
alias: None,
|
||||
name: "Old room 1",
|
||||
@@ -1800,7 +1800,7 @@ mod tests {
|
||||
};
|
||||
|
||||
let room2 = TestRoomItem {
|
||||
room_id: RoomId::new(server).to_owned(),
|
||||
room_id: RoomId::new_v1(server).to_owned(),
|
||||
tags: vec![],
|
||||
alias: None,
|
||||
name: "Old room 2",
|
||||
@@ -1809,7 +1809,7 @@ mod tests {
|
||||
};
|
||||
|
||||
let room3 = TestRoomItem {
|
||||
room_id: RoomId::new(server).to_owned(),
|
||||
room_id: RoomId::new_v1(server).to_owned(),
|
||||
tags: vec![],
|
||||
alias: None,
|
||||
name: "New Fancy Room",
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
//! Window for Matrix spaces
|
||||
use std::ops::{Deref, DerefMut};
|
||||
use std::str::FromStr;
|
||||
use std::time::{Duration, Instant};
|
||||
|
||||
use matrix_sdk::ruma::events::space::child::SpaceChildEventContent;
|
||||
use matrix_sdk::ruma::events::StateEventType;
|
||||
use matrix_sdk::ruma::OwnedSpaceChildOrder;
|
||||
use matrix_sdk::{
|
||||
room::Room as MatrixRoom,
|
||||
ruma::{OwnedRoomId, RoomId},
|
||||
@@ -105,7 +107,11 @@ impl SpaceState {
|
||||
|
||||
let via = self.room.route().await.map_err(IambError::from)?;
|
||||
let mut ev = SpaceChildEventContent::new(via);
|
||||
ev.order = order;
|
||||
ev.order = order
|
||||
.as_deref()
|
||||
.map(OwnedSpaceChildOrder::from_str)
|
||||
.transpose()
|
||||
.map_err(IambError::InvalidSpaceChildOrder)?;
|
||||
ev.suggested = suggested;
|
||||
let _ = self
|
||||
.room
|
||||
|
||||
@@ -1087,11 +1087,15 @@ impl ClientWorker {
|
||||
async move {
|
||||
let room_id = room.room_id();
|
||||
let room_info = room.clone_info();
|
||||
let room_version = room_info.room_version().unwrap_or(&RoomVersionId::V1);
|
||||
let rules = &room_info
|
||||
.room_version()
|
||||
.and_then(RoomVersionId::rules)
|
||||
.unwrap_or(RoomVersionId::V1.rules().unwrap())
|
||||
.redaction;
|
||||
|
||||
let mut locked = store.lock().await;
|
||||
let info = locked.application.get_room_info(room_id.to_owned());
|
||||
info.redact(ev, room_version);
|
||||
info.redact(ev, rules);
|
||||
}
|
||||
},
|
||||
);
|
||||
@@ -1421,7 +1425,7 @@ impl ClientWorker {
|
||||
|
||||
let resp = self.client.send(req).await.map_err(IambError::from)?;
|
||||
|
||||
let rooms = resp.rooms.into_iter().map(|chunk| chunk.room_id).collect();
|
||||
let rooms = resp.rooms.into_iter().map(|chunk| chunk.summary.room_id).collect();
|
||||
|
||||
Ok(rooms)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user