Browse Source

Upgrade matrix-sdk and ruma crates

main
Kévin Commaille 17 hours ago
parent
commit
2cfc3c45c3
No known key found for this signature in database
GPG Key ID: F26F4BE20A08255B
  1. 70
      Cargo.lock
  2. 21
      Cargo.toml
  3. 18
      src/login/in_browser_page.rs
  4. 13
      src/session/room/mod.rs
  5. 6
      src/session/room/timeline/event/mod.rs
  6. 22
      src/session_view/room_history/state/content.rs
  7. 10
      src/session_view/room_history/state/creation.rs
  8. 6
      src/user_facing_error.rs

70
Cargo.lock generated

@ -1431,9 +1431,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"js-sys",
"libc", "libc",
"r-efi", "r-efi",
"wasip2", "wasip2",
"wasm-bindgen",
] ]
[[package]] [[package]]
@ -2847,7 +2849,7 @@ dependencies = [
[[package]] [[package]]
name = "matrix-sdk" name = "matrix-sdk"
version = "0.16.0" version = "0.16.0"
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=029148ef6e45d51e6325a4f5aadcdee7ec9385cc#029148ef6e45d51e6325a4f5aadcdee7ec9385cc" source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=74c1044b7dd384cf6436598713c12c915b331d73#74c1044b7dd384cf6436598713c12c915b331d73"
dependencies = [ dependencies = [
"anymap2", "anymap2",
"aquamarine", "aquamarine",
@ -2880,6 +2882,7 @@ dependencies = [
"mime", "mime",
"mime2ext", "mime2ext",
"oauth2", "oauth2",
"oauth2-reqwest",
"percent-encoding", "percent-encoding",
"pin-project-lite", "pin-project-lite",
"rand 0.8.5", "rand 0.8.5",
@ -2905,7 +2908,7 @@ dependencies = [
[[package]] [[package]]
name = "matrix-sdk-base" name = "matrix-sdk-base"
version = "0.16.0" version = "0.16.0"
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=029148ef6e45d51e6325a4f5aadcdee7ec9385cc#029148ef6e45d51e6325a4f5aadcdee7ec9385cc" source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=74c1044b7dd384cf6436598713c12c915b331d73#74c1044b7dd384cf6436598713c12c915b331d73"
dependencies = [ dependencies = [
"as_variant", "as_variant",
"async-trait", "async-trait",
@ -2931,7 +2934,7 @@ dependencies = [
[[package]] [[package]]
name = "matrix-sdk-common" name = "matrix-sdk-common"
version = "0.16.0" version = "0.16.0"
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=029148ef6e45d51e6325a4f5aadcdee7ec9385cc#029148ef6e45d51e6325a4f5aadcdee7ec9385cc" source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=74c1044b7dd384cf6436598713c12c915b331d73#74c1044b7dd384cf6436598713c12c915b331d73"
dependencies = [ dependencies = [
"eyeball-im", "eyeball-im",
"futures-core", "futures-core",
@ -2954,7 +2957,7 @@ dependencies = [
[[package]] [[package]]
name = "matrix-sdk-crypto" name = "matrix-sdk-crypto"
version = "0.16.0" version = "0.16.0"
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=029148ef6e45d51e6325a4f5aadcdee7ec9385cc#029148ef6e45d51e6325a4f5aadcdee7ec9385cc" source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=74c1044b7dd384cf6436598713c12c915b331d73#74c1044b7dd384cf6436598713c12c915b331d73"
dependencies = [ dependencies = [
"aes", "aes",
"aquamarine", "aquamarine",
@ -2995,12 +2998,12 @@ dependencies = [
[[package]] [[package]]
name = "matrix-sdk-indexeddb" name = "matrix-sdk-indexeddb"
version = "0.16.0" version = "0.16.0"
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=029148ef6e45d51e6325a4f5aadcdee7ec9385cc#029148ef6e45d51e6325a4f5aadcdee7ec9385cc" source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=74c1044b7dd384cf6436598713c12c915b331d73#74c1044b7dd384cf6436598713c12c915b331d73"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"base64", "base64",
"futures-util", "futures-util",
"getrandom 0.2.17", "getrandom 0.3.4",
"gloo-utils", "gloo-utils",
"hkdf", "hkdf",
"js-sys", "js-sys",
@ -3026,7 +3029,7 @@ dependencies = [
[[package]] [[package]]
name = "matrix-sdk-qrcode" name = "matrix-sdk-qrcode"
version = "0.16.0" version = "0.16.0"
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=029148ef6e45d51e6325a4f5aadcdee7ec9385cc#029148ef6e45d51e6325a4f5aadcdee7ec9385cc" source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=74c1044b7dd384cf6436598713c12c915b331d73#74c1044b7dd384cf6436598713c12c915b331d73"
dependencies = [ dependencies = [
"byteorder", "byteorder",
"qrcode", "qrcode",
@ -3038,7 +3041,7 @@ dependencies = [
[[package]] [[package]]
name = "matrix-sdk-sqlite" name = "matrix-sdk-sqlite"
version = "0.16.0" version = "0.16.0"
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=029148ef6e45d51e6325a4f5aadcdee7ec9385cc#029148ef6e45d51e6325a4f5aadcdee7ec9385cc" source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=74c1044b7dd384cf6436598713c12c915b331d73#74c1044b7dd384cf6436598713c12c915b331d73"
dependencies = [ dependencies = [
"as_variant", "as_variant",
"async-trait", "async-trait",
@ -3065,12 +3068,12 @@ dependencies = [
[[package]] [[package]]
name = "matrix-sdk-store-encryption" name = "matrix-sdk-store-encryption"
version = "0.16.0" version = "0.16.0"
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=029148ef6e45d51e6325a4f5aadcdee7ec9385cc#029148ef6e45d51e6325a4f5aadcdee7ec9385cc" source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=74c1044b7dd384cf6436598713c12c915b331d73#74c1044b7dd384cf6436598713c12c915b331d73"
dependencies = [ dependencies = [
"base64", "base64",
"blake3", "blake3",
"chacha20poly1305", "chacha20poly1305",
"getrandom 0.2.17", "getrandom 0.3.4",
"hmac", "hmac",
"pbkdf2", "pbkdf2",
"rand 0.8.5", "rand 0.8.5",
@ -3085,7 +3088,7 @@ dependencies = [
[[package]] [[package]]
name = "matrix-sdk-ui" name = "matrix-sdk-ui"
version = "0.16.0" version = "0.16.0"
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=029148ef6e45d51e6325a4f5aadcdee7ec9385cc#029148ef6e45d51e6325a4f5aadcdee7ec9385cc" source = "git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=74c1044b7dd384cf6436598713c12c915b331d73#74c1044b7dd384cf6436598713c12c915b331d73"
dependencies = [ dependencies = [
"as_variant", "as_variant",
"async-rx", "async-rx",
@ -3378,7 +3381,6 @@ dependencies = [
"getrandom 0.2.17", "getrandom 0.2.17",
"http", "http",
"rand 0.8.5", "rand 0.8.5",
"reqwest",
"serde", "serde",
"serde_json", "serde_json",
"serde_path_to_error", "serde_path_to_error",
@ -3387,6 +3389,16 @@ dependencies = [
"url", "url",
] ]
[[package]]
name = "oauth2-reqwest"
version = "0.1.0-alpha.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "234fb5c965bbce983ee5de636a7a51d6a3223da8067ea02f9ab2d2d78ac08be2"
dependencies = [
"oauth2",
"reqwest",
]
[[package]] [[package]]
name = "objc" name = "objc"
version = "0.2.7" version = "0.2.7"
@ -3960,9 +3972,9 @@ checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
[[package]] [[package]]
name = "reqwest" name = "reqwest"
version = "0.12.28" version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801"
dependencies = [ dependencies = [
"base64", "base64",
"bytes", "bytes",
@ -3982,9 +3994,6 @@ dependencies = [
"percent-encoding", "percent-encoding",
"pin-project-lite", "pin-project-lite",
"rustls-pki-types", "rustls-pki-types",
"serde",
"serde_json",
"serde_urlencoded",
"sync_wrapper", "sync_wrapper",
"tokio", "tokio",
"tokio-native-tls", "tokio-native-tls",
@ -4045,7 +4054,7 @@ dependencies = [
[[package]] [[package]]
name = "ruma" name = "ruma"
version = "0.14.1" version = "0.14.1"
source = "git+https://github.com/ruma/ruma.git?rev=4a0ae80fbf42d1b759e108d7315537d13583c144#4a0ae80fbf42d1b759e108d7315537d13583c144" source = "git+https://github.com/ruma/ruma.git?rev=2455c71ec8bd16318397865d9c6e231e792cb15e#2455c71ec8bd16318397865d9c6e231e792cb15e"
dependencies = [ dependencies = [
"assign", "assign",
"js_int", "js_int",
@ -4061,7 +4070,7 @@ dependencies = [
[[package]] [[package]]
name = "ruma-client-api" name = "ruma-client-api"
version = "0.22.1" version = "0.22.1"
source = "git+https://github.com/ruma/ruma.git?rev=4a0ae80fbf42d1b759e108d7315537d13583c144#4a0ae80fbf42d1b759e108d7315537d13583c144" source = "git+https://github.com/ruma/ruma.git?rev=2455c71ec8bd16318397865d9c6e231e792cb15e#2455c71ec8bd16318397865d9c6e231e792cb15e"
dependencies = [ dependencies = [
"as_variant", "as_variant",
"assign", "assign",
@ -4084,7 +4093,7 @@ dependencies = [
[[package]] [[package]]
name = "ruma-common" name = "ruma-common"
version = "0.17.1" version = "0.17.1"
source = "git+https://github.com/ruma/ruma.git?rev=4a0ae80fbf42d1b759e108d7315537d13583c144#4a0ae80fbf42d1b759e108d7315537d13583c144" source = "git+https://github.com/ruma/ruma.git?rev=2455c71ec8bd16318397865d9c6e231e792cb15e#2455c71ec8bd16318397865d9c6e231e792cb15e"
dependencies = [ dependencies = [
"as_variant", "as_variant",
"base64", "base64",
@ -4093,7 +4102,6 @@ dependencies = [
"getrandom 0.2.17", "getrandom 0.2.17",
"http", "http",
"indexmap", "indexmap",
"js-sys",
"js_int", "js_int",
"konst", "konst",
"percent-encoding", "percent-encoding",
@ -4117,24 +4125,20 @@ dependencies = [
[[package]] [[package]]
name = "ruma-events" name = "ruma-events"
version = "0.32.1" version = "0.32.1"
source = "git+https://github.com/ruma/ruma.git?rev=4a0ae80fbf42d1b759e108d7315537d13583c144#4a0ae80fbf42d1b759e108d7315537d13583c144" source = "git+https://github.com/ruma/ruma.git?rev=2455c71ec8bd16318397865d9c6e231e792cb15e#2455c71ec8bd16318397865d9c6e231e792cb15e"
dependencies = [ dependencies = [
"as_variant", "as_variant",
"indexmap", "indexmap",
"js_int", "js_int",
"js_option", "js_option",
"percent-encoding",
"pulldown-cmark", "pulldown-cmark",
"regex",
"ruma-common", "ruma-common",
"ruma-html", "ruma-html",
"ruma-identifiers-validation",
"ruma-macros", "ruma-macros",
"serde", "serde",
"serde_json", "serde_json",
"thiserror 2.0.18", "thiserror 2.0.18",
"tracing", "tracing",
"url",
"web-time", "web-time",
"wildmatch", "wildmatch",
"zeroize", "zeroize",
@ -4143,7 +4147,7 @@ dependencies = [
[[package]] [[package]]
name = "ruma-federation-api" name = "ruma-federation-api"
version = "0.13.1" version = "0.13.1"
source = "git+https://github.com/ruma/ruma.git?rev=4a0ae80fbf42d1b759e108d7315537d13583c144#4a0ae80fbf42d1b759e108d7315537d13583c144" source = "git+https://github.com/ruma/ruma.git?rev=2455c71ec8bd16318397865d9c6e231e792cb15e#2455c71ec8bd16318397865d9c6e231e792cb15e"
dependencies = [ dependencies = [
"headers", "headers",
"http", "http",
@ -4162,7 +4166,7 @@ dependencies = [
[[package]] [[package]]
name = "ruma-html" name = "ruma-html"
version = "0.6.0" version = "0.6.0"
source = "git+https://github.com/ruma/ruma.git?rev=4a0ae80fbf42d1b759e108d7315537d13583c144#4a0ae80fbf42d1b759e108d7315537d13583c144" source = "git+https://github.com/ruma/ruma.git?rev=2455c71ec8bd16318397865d9c6e231e792cb15e#2455c71ec8bd16318397865d9c6e231e792cb15e"
dependencies = [ dependencies = [
"as_variant", "as_variant",
"html5ever", "html5ever",
@ -4174,7 +4178,7 @@ dependencies = [
[[package]] [[package]]
name = "ruma-identifiers-validation" name = "ruma-identifiers-validation"
version = "0.12.0" version = "0.12.0"
source = "git+https://github.com/ruma/ruma.git?rev=4a0ae80fbf42d1b759e108d7315537d13583c144#4a0ae80fbf42d1b759e108d7315537d13583c144" source = "git+https://github.com/ruma/ruma.git?rev=2455c71ec8bd16318397865d9c6e231e792cb15e#2455c71ec8bd16318397865d9c6e231e792cb15e"
dependencies = [ dependencies = [
"js_int", "js_int",
"thiserror 2.0.18", "thiserror 2.0.18",
@ -4183,7 +4187,7 @@ dependencies = [
[[package]] [[package]]
name = "ruma-macros" name = "ruma-macros"
version = "0.17.1" version = "0.17.1"
source = "git+https://github.com/ruma/ruma.git?rev=4a0ae80fbf42d1b759e108d7315537d13583c144#4a0ae80fbf42d1b759e108d7315537d13583c144" source = "git+https://github.com/ruma/ruma.git?rev=2455c71ec8bd16318397865d9c6e231e792cb15e#2455c71ec8bd16318397865d9c6e231e792cb15e"
dependencies = [ dependencies = [
"as_variant", "as_variant",
"cfg-if", "cfg-if",
@ -4199,7 +4203,7 @@ dependencies = [
[[package]] [[package]]
name = "ruma-signatures" name = "ruma-signatures"
version = "0.19.0" version = "0.19.0"
source = "git+https://github.com/ruma/ruma.git?rev=4a0ae80fbf42d1b759e108d7315537d13583c144#4a0ae80fbf42d1b759e108d7315537d13583c144" source = "git+https://github.com/ruma/ruma.git?rev=2455c71ec8bd16318397865d9c6e231e792cb15e#2455c71ec8bd16318397865d9c6e231e792cb15e"
dependencies = [ dependencies = [
"base64", "base64",
"ed25519-dalek", "ed25519-dalek",
@ -5428,9 +5432,9 @@ dependencies = [
[[package]] [[package]]
name = "wasm-streams" name = "wasm-streams"
version = "0.4.2" version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb"
dependencies = [ dependencies = [
"futures-util", "futures-util",
"js-sys", "js-sys",

21
Cargo.toml

@ -78,23 +78,34 @@ sourceview = { version = "0.11", package = "sourceview5" }
[dependencies.matrix-sdk] [dependencies.matrix-sdk]
# version = "0.14" # version = "0.14"
git = "https://github.com/matrix-org/matrix-rust-sdk.git" git = "https://github.com/matrix-org/matrix-rust-sdk.git"
rev = "029148ef6e45d51e6325a4f5aadcdee7ec9385cc" rev = "74c1044b7dd384cf6436598713c12c915b331d73"
features = ["socks", "sso-login", "markdown", "qrcode"] default-features = false
features = [
"automatic-room-key-forwarding",
"e2e-encryption",
"markdown",
"native-tls",
"qrcode",
"socks",
"sqlite",
"sso-login",
]
[dependencies.matrix-sdk-store-encryption] [dependencies.matrix-sdk-store-encryption]
# version = "0.14" # version = "0.14"
git = "https://github.com/matrix-org/matrix-rust-sdk.git" git = "https://github.com/matrix-org/matrix-rust-sdk.git"
rev = "029148ef6e45d51e6325a4f5aadcdee7ec9385cc" rev = "74c1044b7dd384cf6436598713c12c915b331d73"
[dependencies.matrix-sdk-ui] [dependencies.matrix-sdk-ui]
# version = "0.14" # version = "0.14"
git = "https://github.com/matrix-org/matrix-rust-sdk.git" git = "https://github.com/matrix-org/matrix-rust-sdk.git"
rev = "029148ef6e45d51e6325a4f5aadcdee7ec9385cc" rev = "74c1044b7dd384cf6436598713c12c915b331d73"
default-features = false
[dependencies.ruma] [dependencies.ruma]
# version = "0.14" # version = "0.14"
git = "https://github.com/ruma/ruma.git" git = "https://github.com/ruma/ruma.git"
rev = "4a0ae80fbf42d1b759e108d7315537d13583c144" rev = "2455c71ec8bd16318397865d9c6e231e792cb15e"
features = [ features = [
"client-api-c", "client-api-c",
"markdown", "markdown",

18
src/login/in_browser_page.rs

@ -3,8 +3,11 @@ use gettextrs::gettext;
use gtk::glib; use gtk::glib;
use matrix_sdk::{ use matrix_sdk::{
Error, Error,
authentication::oauth::{OAuthAuthorizationData, UrlOrQuery}, authentication::oauth::OAuthAuthorizationData,
utils::local_server::{LocalServerRedirectHandle, QueryString}, utils::{
UrlOrQuery,
local_server::{LocalServerRedirectHandle, QueryString},
},
}; };
use tokio::task::AbortHandle; use tokio::task::AbortHandle;
use tracing::{error, warn}; use tracing::{error, warn};
@ -130,8 +133,8 @@ mod imp {
match data { match data {
LoginInBrowserData::Oauth(_) => self.finish_oauth_login(query_string).await, LoginInBrowserData::Oauth(_) => self.finish_oauth_login(query_string).await,
LoginInBrowserData::Matrix(url) => { LoginInBrowserData::Matrix(_) => {
self.finish_matrix_login(url, query_string).await; self.finish_matrix_login(query_string).await;
} }
} }
} }
@ -174,7 +177,7 @@ mod imp {
} }
/// Finish the Matrix SSO login process. /// Finish the Matrix SSO login process.
async fn finish_matrix_login(&self, mut url: Url, query_string: QueryString) { async fn finish_matrix_login(&self, query_string: QueryString) {
let Some(login) = self.login.upgrade() else { let Some(login) = self.login.upgrade() else {
return; return;
}; };
@ -185,12 +188,9 @@ mod imp {
.expect("login client should be constructed"); .expect("login client should be constructed");
let matrix_auth = client.matrix_auth(); let matrix_auth = client.matrix_auth();
// We need to rebuild the URL to use the SDK's method.
url.set_query(Some(&query_string.0));
let handle = spawn_tokio!(async move { let handle = spawn_tokio!(async move {
matrix_auth matrix_auth
.login_with_sso_callback(url) .login_with_sso_callback(query_string.into())
.map_err(|error| Error::UnknownError(error.into()))? .map_err(|error| Error::UnknownError(error.into()))?
.initial_device_display_name(APP_NAME) .initial_device_display_name(APP_NAME)
.await .await

13
src/session/room/mod.rs

@ -18,7 +18,7 @@ use matrix_sdk::{
use ruma::{ use ruma::{
EventId, MatrixToUri, OwnedEventId, OwnedRoomId, OwnedUserId, RoomId, UserId, EventId, MatrixToUri, OwnedEventId, OwnedRoomId, OwnedUserId, RoomId, UserId,
api::client::{ api::client::{
error::{ErrorKind, RetryAfter}, error::{ErrorKind, LimitExceededErrorData, RetryAfter},
receipt::create_receipt::v3::ReceiptType as ApiReceiptType, receipt::create_receipt::v3::ReceiptType as ApiReceiptType,
}, },
events::room::{ events::room::{
@ -1573,9 +1573,12 @@ mod imp {
} }
let duration = match error.client_api_error_kind() { let duration = match error.client_api_error_kind() {
Some(ErrorKind::LimitExceeded { Some(ErrorKind::LimitExceeded(
retry_after: Some(retry_after), LimitExceededErrorData {
}) => match retry_after { retry_after: Some(retry_after),
..
},
)) => match retry_after {
RetryAfter::Delay(duration) => Some(*duration), RetryAfter::Delay(duration) => Some(*duration),
RetryAfter::DateTime(time) => { RetryAfter::DateTime(time) => {
time.duration_since(SystemTime::now()).ok() time.duration_since(SystemTime::now()).ok()
@ -1965,7 +1968,7 @@ impl Room {
let handle = spawn_tokio!(async move { let handle = spawn_tokio!(async move {
let futures = events_clone let futures = events_clone
.into_iter() .into_iter()
.map(|(event_id, reason)| matrix_room.report_content(event_id, None, reason)); .map(|(event_id, reason)| matrix_room.report_content(event_id, reason));
futures_util::future::join_all(futures).await futures_util::future::join_all(futures).await
}); });

6
src/session/room/timeline/event/mod.rs

@ -3,7 +3,7 @@ use std::sync::Arc;
use gtk::{gio, glib, glib::closure_local, prelude::*, subclass::prelude::*}; use gtk::{gio, glib, glib::closure_local, prelude::*, subclass::prelude::*};
use indexmap::IndexMap; use indexmap::IndexMap;
use matrix_sdk_ui::timeline::{ use matrix_sdk_ui::timeline::{
AnyOtherFullStateEventContent, EmbeddedEvent, Error as TimelineError, EventSendState, AnyOtherStateEventContentChange, EmbeddedEvent, Error as TimelineError, EventSendState,
EventTimelineItem, MembershipChange, Message, MsgLikeKind, TimelineDetails, EventTimelineItem, MembershipChange, Message, MsgLikeKind, TimelineDetails,
TimelineEventItemId, TimelineItemContent, TimelineEventItemId, TimelineItemContent,
}; };
@ -666,7 +666,7 @@ impl Event {
// so we do not group it. // so we do not group it.
!matches!( !matches!(
other_state.content(), other_state.content(),
AnyOtherFullStateEventContent::RoomCreate(_) AnyOtherStateEventContentChange::RoomCreate(_)
) )
} }
_ => false, _ => false,
@ -679,7 +679,7 @@ impl Event {
TimelineItemContent::OtherState(other_state) => { TimelineItemContent::OtherState(other_state) => {
matches!( matches!(
other_state.content(), other_state.content(),
AnyOtherFullStateEventContent::RoomCreate(_), AnyOtherStateEventContentChange::RoomCreate(_),
) )
} }
_ => false, _ => false,

22
src/session_view/room_history/state/content.rs

@ -2,12 +2,12 @@ use adw::{prelude::*, subclass::prelude::*};
use gettextrs::gettext; use gettextrs::gettext;
use gtk::{glib, glib::clone, pango}; use gtk::{glib, glib::clone, pango};
use matrix_sdk_ui::timeline::{ use matrix_sdk_ui::timeline::{
AnyOtherFullStateEventContent, MemberProfileChange, MembershipChange, OtherState, AnyOtherStateEventContentChange, MemberProfileChange, MembershipChange, OtherState,
RoomMembershipChange, TimelineItemContent, RoomMembershipChange, TimelineItemContent,
}; };
use ruma::{ use ruma::{
UserId, UserId,
events::{FullStateEventContent, room::member::MembershipState}, events::{StateEventContentChange, room::member::MembershipState},
}; };
use tracing::warn; use tracing::warn;
@ -93,21 +93,21 @@ mod imp {
/// Update this row with the given [`OtherState`]. /// Update this row with the given [`OtherState`].
fn update_with_other_state(&self, other_state: &OtherState, sender: &Member) { fn update_with_other_state(&self, other_state: &OtherState, sender: &Member) {
let widget = match other_state.content() { let widget = match other_state.content() {
AnyOtherFullStateEventContent::RoomCreate(content) => { AnyOtherStateEventContentChange::RoomCreate(content) => {
WidgetType::Creation(StateCreation::new(content)) WidgetType::Creation(StateCreation::new(content))
} }
AnyOtherFullStateEventContent::RoomEncryption(_) => { AnyOtherStateEventContentChange::RoomEncryption(_) => {
WidgetType::Text(gettext("This room is encrypted from this point on.")) WidgetType::Text(gettext("This room is encrypted from this point on."))
} }
AnyOtherFullStateEventContent::RoomThirdPartyInvite(content) => { AnyOtherStateEventContentChange::RoomThirdPartyInvite(content) => {
let display_name = match content { let display_name = match content {
FullStateEventContent::Original { content, .. } => { StateEventContentChange::Original { content, .. } => {
match &content.display_name { match &content.display_name {
s if s.is_empty() => other_state.state_key(), s if s.is_empty() => other_state.state_key(),
s => s, s => s,
} }
} }
FullStateEventContent::Redacted(_) => other_state.state_key(), StateEventContentChange::Redacted(_) => other_state.state_key(),
}; };
WidgetType::Text(gettext_f( WidgetType::Text(gettext_f(
// Translators: Do NOT translate the content between '{' and '}', this is a // Translators: Do NOT translate the content between '{' and '}', this is a
@ -146,11 +146,11 @@ mod imp {
) { ) {
let sender_display_name = sender.disambiguated_name(); let sender_display_name = sender.disambiguated_name();
let target_display_name = match membership_change.content() { let target_display_name = match membership_change.content() {
FullStateEventContent::Original { content, .. } => content StateEventContentChange::Original { content, .. } => content
.displayname .displayname
.clone() .clone()
.unwrap_or_else(|| membership_change.user_id().to_string()), .unwrap_or_else(|| membership_change.user_id().to_string()),
FullStateEventContent::Redacted(_) => membership_change.user_id().to_string(), StateEventContentChange::Redacted(_) => membership_change.user_id().to_string(),
}; };
let supported_membership_change = let supported_membership_change =
@ -294,8 +294,8 @@ mod imp {
MembershipChange::KnockDenied => MembershipChange::KnockDenied, MembershipChange::KnockDenied => MembershipChange::KnockDenied,
_ => { _ => {
let membership = match membership_change.content() { let membership = match membership_change.content() {
FullStateEventContent::Original { content, .. } => &content.membership, StateEventContentChange::Original { content, .. } => &content.membership,
FullStateEventContent::Redacted(content) => &content.membership, StateEventContentChange::Redacted(content) => &content.membership,
}; };
match membership { match membership {

10
src/session_view/room_history/state/creation.rs

@ -2,7 +2,7 @@ use adw::{prelude::*, subclass::prelude::*};
use gettextrs::gettext; use gettextrs::gettext;
use gtk::glib; use gtk::glib;
use matrix_sdk::ruma::events::room::create::RoomCreateEventContent; use matrix_sdk::ruma::events::room::create::RoomCreateEventContent;
use ruma::events::FullStateEventContent; use ruma::events::StateEventContentChange;
mod imp { mod imp {
use glib::subclass::InitializingObject; use glib::subclass::InitializingObject;
@ -39,10 +39,10 @@ mod imp {
impl StateCreation { impl StateCreation {
/// Set the room create state event to display. /// Set the room create state event to display.
pub(super) fn set_event(&self, event: &FullStateEventContent<RoomCreateEventContent>) { pub(super) fn set_event(&self, event: &StateEventContentChange<RoomCreateEventContent>) {
let predecessor = match event { let predecessor = match event {
FullStateEventContent::Original { content, .. } => content.predecessor.as_ref(), StateEventContentChange::Original { content, .. } => content.predecessor.as_ref(),
FullStateEventContent::Redacted(_) => None, StateEventContentChange::Redacted(_) => None,
}; };
if let Some(predecessor) = &predecessor { if let Some(predecessor) = &predecessor {
@ -71,7 +71,7 @@ glib::wrapper! {
} }
impl StateCreation { impl StateCreation {
pub fn new(event: &FullStateEventContent<RoomCreateEventContent>) -> Self { pub fn new(event: &StateEventContentChange<RoomCreateEventContent>) -> Self {
let obj: Self = glib::Object::new(); let obj: Self = glib::Object::new();
obj.imp().set_event(event); obj.imp().set_event(event);
obj obj

6
src/user_facing_error.rs

@ -23,10 +23,10 @@ impl UserFacingError for HttpError {
self.as_client_api_error().map(|error| &error.body) self.as_client_api_error().map(|error| &error.body)
{ {
match kind { match kind {
ErrorKind::Forbidden { .. } => gettext("Invalid credentials."), ErrorKind::Forbidden => gettext("Invalid credentials."),
ErrorKind::UserDeactivated => gettext("Account deactivated."), ErrorKind::UserDeactivated => gettext("Account deactivated."),
ErrorKind::LimitExceeded { retry_after } => { ErrorKind::LimitExceeded(limit_exceeded) => {
if let Some(retry_after) = retry_after { if let Some(retry_after) = &limit_exceeded.retry_after {
let duration = match retry_after { let duration = match retry_after {
RetryAfter::Delay(duration) => *duration, RetryAfter::Delay(duration) => *duration,
RetryAfter::DateTime(until) => until RetryAfter::DateTime(until) => until

Loading…
Cancel
Save