Skip to content

Commit 7ccb1cb

Browse files
authored
Upgrade Matrix SDK to 0.14 (#521)
1 parent 1ec3115 commit 7ccb1cb

File tree

9 files changed

+289
-200
lines changed

9 files changed

+289
-200
lines changed

Cargo.lock

Lines changed: 242 additions & 172 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ license = "Apache-2.0"
1111
exclude = [".github", "CONTRIBUTING.md"]
1212
keywords = ["matrix", "chat", "tui", "vim"]
1313
categories = ["command-line-utilities"]
14-
rust-version = "1.85"
14+
rust-version = "1.88"
1515
build = "build.rs"
1616

1717
[features]
@@ -90,7 +90,7 @@ version = "0.0.24"
9090
#rev = "e40dbb0bfeabe4cfd08facd2acb446080a330d75"
9191

9292
[dependencies.matrix-sdk]
93-
version = "0.13.0"
93+
version = "0.14.0"
9494
default-features = false
9595
features = ["e2e-encryption", "sqlite", "sso-login"]
9696

rust-toolchain.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
[toolchain]
2-
channel = "1.85"
2+
channel = "1.88"
33
components = [ "clippy" ]

src/base.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use std::time::{Duration, Instant};
1313

1414
use emojis::Emoji;
1515
use matrix_sdk::ruma::events::receipt::ReceiptThread;
16+
use matrix_sdk::ruma::room_version_rules::RedactionRules;
1617
use ratatui::{
1718
buffer::Buffer,
1819
layout::{Alignment, Rect},
@@ -57,7 +58,6 @@ use matrix_sdk::{
5758
OwnedRoomId,
5859
OwnedUserId,
5960
RoomId,
60-
RoomVersionId,
6161
UserId,
6262
},
6363
RoomState as MatrixRoomState,
@@ -785,6 +785,10 @@ pub enum IambError {
785785
#[error("Invalid room alias id: {0}")]
786786
InvalidRoomAliasId(#[from] matrix_sdk::ruma::IdParseError),
787787

788+
/// An invalid space child order was specified.
789+
#[error("Invalid space child order: {0}")]
790+
InvalidSpaceChildOrder(matrix_sdk::ruma::IdParseError),
791+
788792
/// A failure occurred during verification.
789793
#[error("Verification request error: {0}")]
790794
VerificationRequestError(#[from] matrix_sdk::encryption::identities::RequestVerificationError),
@@ -1025,7 +1029,7 @@ impl RoomInfo {
10251029
self.messages.get_mut(self.keys.get(event_id)?.to_message_key()?)
10261030
}
10271031

1028-
pub fn redact(&mut self, ev: OriginalSyncRoomRedactionEvent, room_version: &RoomVersionId) {
1032+
pub fn redact(&mut self, ev: OriginalSyncRoomRedactionEvent, rules: &RedactionRules) {
10291033
let Some(redacts) = &ev.redacts else {
10301034
return;
10311035
};
@@ -1035,20 +1039,20 @@ impl RoomInfo {
10351039
Some(EventLocation::State(key)) => {
10361040
if let Some(msg) = self.messages.get_mut(key) {
10371041
let ev = SyncRoomRedactionEvent::Original(ev);
1038-
msg.redact(ev, room_version);
1042+
msg.redact(ev, rules);
10391043
}
10401044
},
10411045
Some(EventLocation::Message(None, key)) => {
10421046
if let Some(msg) = self.messages.get_mut(key) {
10431047
let ev = SyncRoomRedactionEvent::Original(ev);
1044-
msg.redact(ev, room_version);
1048+
msg.redact(ev, rules);
10451049
}
10461050
},
10471051
Some(EventLocation::Message(Some(root), key)) => {
10481052
if let Some(thread) = self.threads.get_mut(root) {
10491053
if let Some(msg) = thread.get_mut(key) {
10501054
let ev = SyncRoomRedactionEvent::Original(ev);
1051-
msg.redact(ev, room_version);
1055+
msg.redact(ev, rules);
10521056
}
10531057
}
10541058
},

src/message/mod.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use std::ops::{Deref, DerefMut};
1111
use chrono::{DateTime, Local as LocalTz};
1212
use humansize::{format_size, DECIMAL};
1313
use matrix_sdk::ruma::events::receipt::ReceiptThread;
14+
use matrix_sdk::ruma::room_version_rules::RedactionRules;
1415
use serde_json::json;
1516
use unicode_width::UnicodeWidthStr;
1617

@@ -43,7 +44,6 @@ use matrix_sdk::ruma::{
4344
MilliSecondsSinceUnixEpoch,
4445
OwnedEventId,
4546
OwnedUserId,
46-
RoomVersionId,
4747
UInt,
4848
};
4949

@@ -511,7 +511,7 @@ impl MessageEvent {
511511
}
512512
}
513513

514-
fn redact(&mut self, redaction: SyncRoomRedactionEvent, version: &RoomVersionId) {
514+
fn redact(&mut self, redaction: SyncRoomRedactionEvent, rules: &RedactionRules) {
515515
match self {
516516
MessageEvent::EncryptedOriginal(_) => return,
517517
MessageEvent::EncryptedRedacted(_) => return,
@@ -520,7 +520,7 @@ impl MessageEvent {
520520
MessageEvent::Local(_, _) => return,
521521
MessageEvent::Original(ev) => {
522522
let redacted = RedactedRoomMessageEvent {
523-
content: ev.content.clone().redact(version),
523+
content: ev.content.clone().redact(rules),
524524
event_id: ev.event_id.clone(),
525525
sender: ev.sender.clone(),
526526
origin_server_ts: ev.origin_server_ts,
@@ -581,7 +581,11 @@ fn body_cow_content(content: &RoomMessageEventContent) -> Cow<'_, str> {
581581
}
582582

583583
fn body_cow_reason(unsigned: &RedactedUnsigned) -> Cow<'_, str> {
584-
let reason = unsigned.redacted_because.content.reason.as_ref();
584+
let reason = unsigned
585+
.redacted_because
586+
.deserialize()
587+
.ok()
588+
.and_then(|ev| ev.content.reason);
585589

586590
if let Some(r) = reason {
587591
Cow::Owned(format!("[Redacted: {r:?}]"))
@@ -1135,8 +1139,8 @@ impl Message {
11351139
Span::styled(sender, style).into()
11361140
}
11371141

1138-
pub fn redact(&mut self, redaction: SyncRoomRedactionEvent, version: &RoomVersionId) {
1139-
self.event.redact(redaction, version);
1142+
pub fn redact(&mut self, redaction: SyncRoomRedactionEvent, rules: &RedactionRules) {
1143+
self.event.redact(redaction, rules);
11401144
self.html = None;
11411145
self.downloaded = false;
11421146
self.image_preview = ImageStatus::None;

src/tests.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ use crate::{
4949
const TEST_ROOM1_ALIAS: &str = "#room1:example.com";
5050

5151
lazy_static! {
52-
pub static ref TEST_ROOM1_ID: OwnedRoomId = RoomId::new(server_name!("example.com")).to_owned();
52+
pub static ref TEST_ROOM1_ID: OwnedRoomId =
53+
RoomId::new_v1(server_name!("example.com")).to_owned();
5354
pub static ref TEST_USER1: OwnedUserId = user_id!("@user1:example.com").to_owned();
5455
pub static ref TEST_USER2: OwnedUserId = user_id!("@user2:example.com").to_owned();
5556
pub static ref TEST_USER3: OwnedUserId = user_id!("@user3:example.com").to_owned();

src/windows/mod.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1673,7 +1673,7 @@ mod tests {
16731673
let server = server_name!("example.com");
16741674

16751675
let room1 = TestRoomItem {
1676-
room_id: RoomId::new(server).to_owned(),
1676+
room_id: RoomId::new_v1(server).to_owned(),
16771677
tags: vec![TagName::Favorite],
16781678
alias: Some(room_alias_id!("#room1:example.com").to_owned()),
16791679
name: "Z",
@@ -1682,7 +1682,7 @@ mod tests {
16821682
};
16831683

16841684
let room2 = TestRoomItem {
1685-
room_id: RoomId::new(server).to_owned(),
1685+
room_id: RoomId::new_v1(server).to_owned(),
16861686
tags: vec![],
16871687
alias: Some(room_alias_id!("#a:example.com").to_owned()),
16881688
name: "Unnamed Room",
@@ -1691,7 +1691,7 @@ mod tests {
16911691
};
16921692

16931693
let room3 = TestRoomItem {
1694-
room_id: RoomId::new(server).to_owned(),
1694+
room_id: RoomId::new_v1(server).to_owned(),
16951695
tags: vec![],
16961696
alias: None,
16971697
name: "Cool Room",
@@ -1739,7 +1739,7 @@ mod tests {
17391739
let server = server_name!("example.com");
17401740

17411741
let room1 = TestRoomItem {
1742-
room_id: RoomId::new(server).to_owned(),
1742+
room_id: RoomId::new_v1(server).to_owned(),
17431743
tags: vec![],
17441744
alias: None,
17451745
name: "Room 1",
@@ -1748,7 +1748,7 @@ mod tests {
17481748
};
17491749

17501750
let room2 = TestRoomItem {
1751-
room_id: RoomId::new(server).to_owned(),
1751+
room_id: RoomId::new_v1(server).to_owned(),
17521752
tags: vec![],
17531753
alias: None,
17541754
name: "Room 2",
@@ -1760,7 +1760,7 @@ mod tests {
17601760
};
17611761

17621762
let room3 = TestRoomItem {
1763-
room_id: RoomId::new(server).to_owned(),
1763+
room_id: RoomId::new_v1(server).to_owned(),
17641764
tags: vec![],
17651765
alias: None,
17661766
name: "Room 3",
@@ -1791,7 +1791,7 @@ mod tests {
17911791
let server = server_name!("example.com");
17921792

17931793
let room1 = TestRoomItem {
1794-
room_id: RoomId::new(server).to_owned(),
1794+
room_id: RoomId::new_v1(server).to_owned(),
17951795
tags: vec![],
17961796
alias: None,
17971797
name: "Old room 1",
@@ -1800,7 +1800,7 @@ mod tests {
18001800
};
18011801

18021802
let room2 = TestRoomItem {
1803-
room_id: RoomId::new(server).to_owned(),
1803+
room_id: RoomId::new_v1(server).to_owned(),
18041804
tags: vec![],
18051805
alias: None,
18061806
name: "Old room 2",
@@ -1809,7 +1809,7 @@ mod tests {
18091809
};
18101810

18111811
let room3 = TestRoomItem {
1812-
room_id: RoomId::new(server).to_owned(),
1812+
room_id: RoomId::new_v1(server).to_owned(),
18131813
tags: vec![],
18141814
alias: None,
18151815
name: "New Fancy Room",

src/windows/room/space.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
//! Window for Matrix spaces
22
use std::ops::{Deref, DerefMut};
3+
use std::str::FromStr;
34
use std::time::{Duration, Instant};
45

56
use matrix_sdk::ruma::events::space::child::SpaceChildEventContent;
67
use matrix_sdk::ruma::events::StateEventType;
8+
use matrix_sdk::ruma::OwnedSpaceChildOrder;
79
use matrix_sdk::{
810
room::Room as MatrixRoom,
911
ruma::{OwnedRoomId, RoomId},
@@ -105,7 +107,11 @@ impl SpaceState {
105107

106108
let via = self.room.route().await.map_err(IambError::from)?;
107109
let mut ev = SpaceChildEventContent::new(via);
108-
ev.order = order;
110+
ev.order = order
111+
.as_deref()
112+
.map(OwnedSpaceChildOrder::from_str)
113+
.transpose()
114+
.map_err(IambError::InvalidSpaceChildOrder)?;
109115
ev.suggested = suggested;
110116
let _ = self
111117
.room

src/worker.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1087,11 +1087,15 @@ impl ClientWorker {
10871087
async move {
10881088
let room_id = room.room_id();
10891089
let room_info = room.clone_info();
1090-
let room_version = room_info.room_version().unwrap_or(&RoomVersionId::V1);
1090+
let rules = &room_info
1091+
.room_version()
1092+
.and_then(RoomVersionId::rules)
1093+
.unwrap_or(RoomVersionId::V1.rules().unwrap())
1094+
.redaction;
10911095

10921096
let mut locked = store.lock().await;
10931097
let info = locked.application.get_room_info(room_id.to_owned());
1094-
info.redact(ev, room_version);
1098+
info.redact(ev, rules);
10951099
}
10961100
},
10971101
);
@@ -1421,7 +1425,7 @@ impl ClientWorker {
14211425

14221426
let resp = self.client.send(req).await.map_err(IambError::from)?;
14231427

1424-
let rooms = resp.rooms.into_iter().map(|chunk| chunk.room_id).collect();
1428+
let rooms = resp.rooms.into_iter().map(|chunk| chunk.summary.room_id).collect();
14251429

14261430
Ok(rooms)
14271431
}

0 commit comments

Comments
 (0)