From 2cfc3c45c3c869275a2672fe7eccd423b0e8c827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Commaille?= Date: Mon, 16 Mar 2026 14:20:38 +0100 Subject: [PATCH] Upgrade matrix-sdk and ruma crates --- Cargo.lock | 70 ++++++++++--------- Cargo.toml | 21 ++++-- src/login/in_browser_page.rs | 18 ++--- src/session/room/mod.rs | 13 ++-- src/session/room/timeline/event/mod.rs | 6 +- .../room_history/state/content.rs | 22 +++--- .../room_history/state/creation.rs | 10 +-- src/user_facing_error.rs | 6 +- 8 files changed, 92 insertions(+), 74 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 85fb0d3c..c4b10450 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1431,9 +1431,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", "wasip2", + "wasm-bindgen", ] [[package]] @@ -2847,7 +2849,7 @@ dependencies = [ [[package]] name = "matrix-sdk" 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 = [ "anymap2", "aquamarine", @@ -2880,6 +2882,7 @@ dependencies = [ "mime", "mime2ext", "oauth2", + "oauth2-reqwest", "percent-encoding", "pin-project-lite", "rand 0.8.5", @@ -2905,7 +2908,7 @@ dependencies = [ [[package]] name = "matrix-sdk-base" 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 = [ "as_variant", "async-trait", @@ -2931,7 +2934,7 @@ dependencies = [ [[package]] name = "matrix-sdk-common" 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 = [ "eyeball-im", "futures-core", @@ -2954,7 +2957,7 @@ dependencies = [ [[package]] name = "matrix-sdk-crypto" 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 = [ "aes", "aquamarine", @@ -2995,12 +2998,12 @@ dependencies = [ [[package]] name = "matrix-sdk-indexeddb" 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 = [ "async-trait", "base64", "futures-util", - "getrandom 0.2.17", + "getrandom 0.3.4", "gloo-utils", "hkdf", "js-sys", @@ -3026,7 +3029,7 @@ dependencies = [ [[package]] name = "matrix-sdk-qrcode" 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 = [ "byteorder", "qrcode", @@ -3038,7 +3041,7 @@ dependencies = [ [[package]] name = "matrix-sdk-sqlite" 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 = [ "as_variant", "async-trait", @@ -3065,12 +3068,12 @@ dependencies = [ [[package]] name = "matrix-sdk-store-encryption" 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 = [ "base64", "blake3", "chacha20poly1305", - "getrandom 0.2.17", + "getrandom 0.3.4", "hmac", "pbkdf2", "rand 0.8.5", @@ -3085,7 +3088,7 @@ dependencies = [ [[package]] name = "matrix-sdk-ui" 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 = [ "as_variant", "async-rx", @@ -3378,7 +3381,6 @@ dependencies = [ "getrandom 0.2.17", "http", "rand 0.8.5", - "reqwest", "serde", "serde_json", "serde_path_to_error", @@ -3387,6 +3389,16 @@ dependencies = [ "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]] name = "objc" version = "0.2.7" @@ -3960,9 +3972,9 @@ checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "reqwest" -version = "0.12.28" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" dependencies = [ "base64", "bytes", @@ -3982,9 +3994,6 @@ dependencies = [ "percent-encoding", "pin-project-lite", "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", "sync_wrapper", "tokio", "tokio-native-tls", @@ -4045,7 +4054,7 @@ dependencies = [ [[package]] name = "ruma" 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 = [ "assign", "js_int", @@ -4061,7 +4070,7 @@ dependencies = [ [[package]] name = "ruma-client-api" 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 = [ "as_variant", "assign", @@ -4084,7 +4093,7 @@ dependencies = [ [[package]] name = "ruma-common" 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 = [ "as_variant", "base64", @@ -4093,7 +4102,6 @@ dependencies = [ "getrandom 0.2.17", "http", "indexmap", - "js-sys", "js_int", "konst", "percent-encoding", @@ -4117,24 +4125,20 @@ dependencies = [ [[package]] name = "ruma-events" 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 = [ "as_variant", "indexmap", "js_int", "js_option", - "percent-encoding", "pulldown-cmark", - "regex", "ruma-common", "ruma-html", - "ruma-identifiers-validation", "ruma-macros", "serde", "serde_json", "thiserror 2.0.18", "tracing", - "url", "web-time", "wildmatch", "zeroize", @@ -4143,7 +4147,7 @@ dependencies = [ [[package]] name = "ruma-federation-api" 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 = [ "headers", "http", @@ -4162,7 +4166,7 @@ dependencies = [ [[package]] name = "ruma-html" 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 = [ "as_variant", "html5ever", @@ -4174,7 +4178,7 @@ dependencies = [ [[package]] name = "ruma-identifiers-validation" 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 = [ "js_int", "thiserror 2.0.18", @@ -4183,7 +4187,7 @@ dependencies = [ [[package]] name = "ruma-macros" 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 = [ "as_variant", "cfg-if", @@ -4199,7 +4203,7 @@ dependencies = [ [[package]] name = "ruma-signatures" 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 = [ "base64", "ed25519-dalek", @@ -5428,9 +5432,9 @@ dependencies = [ [[package]] name = "wasm-streams" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" dependencies = [ "futures-util", "js-sys", diff --git a/Cargo.toml b/Cargo.toml index 6be9e2f6..27319b13 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -78,23 +78,34 @@ sourceview = { version = "0.11", package = "sourceview5" } [dependencies.matrix-sdk] # version = "0.14" git = "https://github.com/matrix-org/matrix-rust-sdk.git" -rev = "029148ef6e45d51e6325a4f5aadcdee7ec9385cc" -features = ["socks", "sso-login", "markdown", "qrcode"] +rev = "74c1044b7dd384cf6436598713c12c915b331d73" +default-features = false +features = [ + "automatic-room-key-forwarding", + "e2e-encryption", + "markdown", + "native-tls", + "qrcode", + "socks", + "sqlite", + "sso-login", +] [dependencies.matrix-sdk-store-encryption] # version = "0.14" git = "https://github.com/matrix-org/matrix-rust-sdk.git" -rev = "029148ef6e45d51e6325a4f5aadcdee7ec9385cc" +rev = "74c1044b7dd384cf6436598713c12c915b331d73" [dependencies.matrix-sdk-ui] # version = "0.14" git = "https://github.com/matrix-org/matrix-rust-sdk.git" -rev = "029148ef6e45d51e6325a4f5aadcdee7ec9385cc" +rev = "74c1044b7dd384cf6436598713c12c915b331d73" +default-features = false [dependencies.ruma] # version = "0.14" git = "https://github.com/ruma/ruma.git" -rev = "4a0ae80fbf42d1b759e108d7315537d13583c144" +rev = "2455c71ec8bd16318397865d9c6e231e792cb15e" features = [ "client-api-c", "markdown", diff --git a/src/login/in_browser_page.rs b/src/login/in_browser_page.rs index 382c5f06..1feae20a 100644 --- a/src/login/in_browser_page.rs +++ b/src/login/in_browser_page.rs @@ -3,8 +3,11 @@ use gettextrs::gettext; use gtk::glib; use matrix_sdk::{ Error, - authentication::oauth::{OAuthAuthorizationData, UrlOrQuery}, - utils::local_server::{LocalServerRedirectHandle, QueryString}, + authentication::oauth::OAuthAuthorizationData, + utils::{ + UrlOrQuery, + local_server::{LocalServerRedirectHandle, QueryString}, + }, }; use tokio::task::AbortHandle; use tracing::{error, warn}; @@ -130,8 +133,8 @@ mod imp { match data { LoginInBrowserData::Oauth(_) => self.finish_oauth_login(query_string).await, - LoginInBrowserData::Matrix(url) => { - self.finish_matrix_login(url, query_string).await; + LoginInBrowserData::Matrix(_) => { + self.finish_matrix_login(query_string).await; } } } @@ -174,7 +177,7 @@ mod imp { } /// 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 { return; }; @@ -185,12 +188,9 @@ mod imp { .expect("login client should be constructed"); 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 { matrix_auth - .login_with_sso_callback(url) + .login_with_sso_callback(query_string.into()) .map_err(|error| Error::UnknownError(error.into()))? .initial_device_display_name(APP_NAME) .await diff --git a/src/session/room/mod.rs b/src/session/room/mod.rs index d95cd7c2..1e96b265 100644 --- a/src/session/room/mod.rs +++ b/src/session/room/mod.rs @@ -18,7 +18,7 @@ use matrix_sdk::{ use ruma::{ EventId, MatrixToUri, OwnedEventId, OwnedRoomId, OwnedUserId, RoomId, UserId, api::client::{ - error::{ErrorKind, RetryAfter}, + error::{ErrorKind, LimitExceededErrorData, RetryAfter}, receipt::create_receipt::v3::ReceiptType as ApiReceiptType, }, events::room::{ @@ -1573,9 +1573,12 @@ mod imp { } let duration = match error.client_api_error_kind() { - Some(ErrorKind::LimitExceeded { - retry_after: Some(retry_after), - }) => match retry_after { + Some(ErrorKind::LimitExceeded( + LimitExceededErrorData { + retry_after: Some(retry_after), + .. + }, + )) => match retry_after { RetryAfter::Delay(duration) => Some(*duration), RetryAfter::DateTime(time) => { time.duration_since(SystemTime::now()).ok() @@ -1965,7 +1968,7 @@ impl Room { let handle = spawn_tokio!(async move { let futures = events_clone .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 }); diff --git a/src/session/room/timeline/event/mod.rs b/src/session/room/timeline/event/mod.rs index 6c6b7c2b..835d0794 100644 --- a/src/session/room/timeline/event/mod.rs +++ b/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 indexmap::IndexMap; use matrix_sdk_ui::timeline::{ - AnyOtherFullStateEventContent, EmbeddedEvent, Error as TimelineError, EventSendState, + AnyOtherStateEventContentChange, EmbeddedEvent, Error as TimelineError, EventSendState, EventTimelineItem, MembershipChange, Message, MsgLikeKind, TimelineDetails, TimelineEventItemId, TimelineItemContent, }; @@ -666,7 +666,7 @@ impl Event { // so we do not group it. !matches!( other_state.content(), - AnyOtherFullStateEventContent::RoomCreate(_) + AnyOtherStateEventContentChange::RoomCreate(_) ) } _ => false, @@ -679,7 +679,7 @@ impl Event { TimelineItemContent::OtherState(other_state) => { matches!( other_state.content(), - AnyOtherFullStateEventContent::RoomCreate(_), + AnyOtherStateEventContentChange::RoomCreate(_), ) } _ => false, diff --git a/src/session_view/room_history/state/content.rs b/src/session_view/room_history/state/content.rs index 7d412c95..675ca708 100644 --- a/src/session_view/room_history/state/content.rs +++ b/src/session_view/room_history/state/content.rs @@ -2,12 +2,12 @@ use adw::{prelude::*, subclass::prelude::*}; use gettextrs::gettext; use gtk::{glib, glib::clone, pango}; use matrix_sdk_ui::timeline::{ - AnyOtherFullStateEventContent, MemberProfileChange, MembershipChange, OtherState, + AnyOtherStateEventContentChange, MemberProfileChange, MembershipChange, OtherState, RoomMembershipChange, TimelineItemContent, }; use ruma::{ UserId, - events::{FullStateEventContent, room::member::MembershipState}, + events::{StateEventContentChange, room::member::MembershipState}, }; use tracing::warn; @@ -93,21 +93,21 @@ mod imp { /// Update this row with the given [`OtherState`]. fn update_with_other_state(&self, other_state: &OtherState, sender: &Member) { let widget = match other_state.content() { - AnyOtherFullStateEventContent::RoomCreate(content) => { + AnyOtherStateEventContentChange::RoomCreate(content) => { WidgetType::Creation(StateCreation::new(content)) } - AnyOtherFullStateEventContent::RoomEncryption(_) => { + AnyOtherStateEventContentChange::RoomEncryption(_) => { WidgetType::Text(gettext("This room is encrypted from this point on.")) } - AnyOtherFullStateEventContent::RoomThirdPartyInvite(content) => { + AnyOtherStateEventContentChange::RoomThirdPartyInvite(content) => { let display_name = match content { - FullStateEventContent::Original { content, .. } => { + StateEventContentChange::Original { content, .. } => { match &content.display_name { s if s.is_empty() => other_state.state_key(), s => s, } } - FullStateEventContent::Redacted(_) => other_state.state_key(), + StateEventContentChange::Redacted(_) => other_state.state_key(), }; WidgetType::Text(gettext_f( // 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 target_display_name = match membership_change.content() { - FullStateEventContent::Original { content, .. } => content + StateEventContentChange::Original { content, .. } => content .displayname .clone() .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 = @@ -294,8 +294,8 @@ mod imp { MembershipChange::KnockDenied => MembershipChange::KnockDenied, _ => { let membership = match membership_change.content() { - FullStateEventContent::Original { content, .. } => &content.membership, - FullStateEventContent::Redacted(content) => &content.membership, + StateEventContentChange::Original { content, .. } => &content.membership, + StateEventContentChange::Redacted(content) => &content.membership, }; match membership { diff --git a/src/session_view/room_history/state/creation.rs b/src/session_view/room_history/state/creation.rs index 1d910537..06f513f2 100644 --- a/src/session_view/room_history/state/creation.rs +++ b/src/session_view/room_history/state/creation.rs @@ -2,7 +2,7 @@ use adw::{prelude::*, subclass::prelude::*}; use gettextrs::gettext; use gtk::glib; use matrix_sdk::ruma::events::room::create::RoomCreateEventContent; -use ruma::events::FullStateEventContent; +use ruma::events::StateEventContentChange; mod imp { use glib::subclass::InitializingObject; @@ -39,10 +39,10 @@ mod imp { impl StateCreation { /// Set the room create state event to display. - pub(super) fn set_event(&self, event: &FullStateEventContent) { + pub(super) fn set_event(&self, event: &StateEventContentChange) { let predecessor = match event { - FullStateEventContent::Original { content, .. } => content.predecessor.as_ref(), - FullStateEventContent::Redacted(_) => None, + StateEventContentChange::Original { content, .. } => content.predecessor.as_ref(), + StateEventContentChange::Redacted(_) => None, }; if let Some(predecessor) = &predecessor { @@ -71,7 +71,7 @@ glib::wrapper! { } impl StateCreation { - pub fn new(event: &FullStateEventContent) -> Self { + pub fn new(event: &StateEventContentChange) -> Self { let obj: Self = glib::Object::new(); obj.imp().set_event(event); obj diff --git a/src/user_facing_error.rs b/src/user_facing_error.rs index 57c9d2f1..61f0c08c 100644 --- a/src/user_facing_error.rs +++ b/src/user_facing_error.rs @@ -23,10 +23,10 @@ impl UserFacingError for HttpError { self.as_client_api_error().map(|error| &error.body) { match kind { - ErrorKind::Forbidden { .. } => gettext("Invalid credentials."), + ErrorKind::Forbidden => gettext("Invalid credentials."), ErrorKind::UserDeactivated => gettext("Account deactivated."), - ErrorKind::LimitExceeded { retry_after } => { - if let Some(retry_after) = retry_after { + ErrorKind::LimitExceeded(limit_exceeded) => { + if let Some(retry_after) = &limit_exceeded.retry_after { let duration = match retry_after { RetryAfter::Delay(duration) => *duration, RetryAfter::DateTime(until) => until