From 7ccb1cbf2c2c3d76469c7f82d226d94bd31a5e1e Mon Sep 17 00:00:00 2001 From: vaw Date: Sat, 25 Oct 2025 23:23:59 +0000 Subject: [PATCH] Upgrade Matrix SDK to 0.14 (#521) --- Cargo.lock | 418 ++++++++++++++++++++++---------------- Cargo.toml | 4 +- rust-toolchain.toml | 2 +- src/base.rs | 14 +- src/message/mod.rs | 16 +- src/tests.rs | 3 +- src/windows/mod.rs | 18 +- src/windows/room/space.rs | 8 +- src/worker.rs | 10 +- 9 files changed, 291 insertions(+), 202 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2e5f55e..fd4acb8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -137,9 +137,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "anymap2" @@ -244,9 +244,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ "concurrent-queue", "event-listener-strategy", @@ -347,7 +347,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.4.1", "event-listener-strategy", "pin-project-lite", ] @@ -428,9 +428,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.88" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", @@ -528,9 +528,9 @@ dependencies = [ [[package]] name = "backon" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302eaff5357a264a2c42f127ecb8bac761cf99749fc3dc95677e2743991f99e7" +checksum = "592277618714fbcecda9a02ba7a8781f319d26532a88553bbacc77ba5d2b3a8d" dependencies = [ "fastrand 2.3.0", "gloo-timers", @@ -593,9 +593,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" dependencies = [ "serde", ] @@ -774,9 +774,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "cfg_aliases" @@ -1034,7 +1034,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "crossterm_winapi", "mio", "parking_lot 0.12.4", @@ -1214,9 +1214,9 @@ dependencies = [ [[package]] name = "deadpool-sqlite" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e531d0beb6d12daa84df0482bf89e06c7ed059551ae1d7313dc7531d37778fb" +checksum = "8510000b26f632483a35120c2ce280c29e1e14c2dcb27b5055dbdac276f63f58" dependencies = [ "deadpool", "deadpool-sync", @@ -1234,9 +1234,9 @@ dependencies = [ [[package]] name = "decancer" -version = "3.3.0" +version = "3.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59c633be7ba6fcf3c153e11d647990e4e4bd463a4d5834ba0a45caa96da6baf" +checksum = "a9244323129647178bf41ac861a2cdb9d9c81b9b09d3d0d1de9cd302b33b8a1d" dependencies = [ "lazy_static 1.5.0", "regex", @@ -1266,9 +1266,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" dependencies = [ "powerfmt", ] @@ -1377,7 +1377,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "objc2", ] @@ -1440,7 +1440,7 @@ version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9e9e99679670f67825fcd24a23cb4eb655a0f92c82bd4d1c1a1357c0cd71e87" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "editor-types-macros", "keybindings", "regex", @@ -1558,9 +1558,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" dependencies = [ "concurrent-queue", "parking", @@ -1573,7 +1573,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.4.1", "pin-project-lite", ] @@ -1730,9 +1730,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -2032,6 +2032,30 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64 0.22.1", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http", +] + [[package]] name = "heck" version = "0.4.1" @@ -2126,6 +2150,15 @@ dependencies = [ "itoa", ] +[[package]] +name = "http-auth" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "150fa4a9462ef926824cf4519c84ed652ca8f4fbae34cb8af045b5cbcaf98822" +dependencies = [ + "memchr", +] + [[package]] name = "http-body" version = "1.0.1" @@ -2253,7 +2286,7 @@ name = "iamb" version = "0.0.11-alpha.1" dependencies = [ "anyhow", - "bitflags 2.9.1", + "bitflags 2.9.4", "chrono", "clap", "comrak", @@ -2426,9 +2459,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -2546,13 +2579,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", "hashbrown", "serde", + "serde_core", ] [[package]] @@ -2624,6 +2658,17 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "libc", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -2820,15 +2865,15 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "libc", ] [[package]] name = "libsqlite3-sys" -version = "0.33.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "947e6816f7825b2b45027c2c32e7085da9934defa535de4a6a46b10a4d5257fa" +checksum = "133c182a6a2c87864fe97778797e46c7e999672690dc9fa3ee8e241aa4a9c13f" dependencies = [ "cc", "pkg-config", @@ -3061,9 +3106,9 @@ dependencies = [ [[package]] name = "matrix-sdk" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de309d33d0c5d77829f952110e8b9e3e6c730880152db6e1778bcaa2cbfaef9" +checksum = "bdfa71339f867dcada2e7f1130f858fd8892088b1a4c123dd50a99ed2399ab22" dependencies = [ "anymap2", "aquamarine", @@ -3076,7 +3121,7 @@ dependencies = [ "bytes", "bytesize", "cfg-if", - "event-listener 5.4.0", + "event-listener 5.4.1", "eyeball", "eyeball-im", "futures-core", @@ -3085,6 +3130,7 @@ dependencies = [ "http", "imbl", "indexmap", + "itertools 0.14.0", "js_int", "language-tags", "matrix-sdk-base", @@ -3105,7 +3151,7 @@ dependencies = [ "serde_json", "sha2", "tempfile", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tokio-stream", "tokio-util", @@ -3119,13 +3165,13 @@ dependencies = [ [[package]] name = "matrix-sdk-base" -version = "0.13.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad7f18305090c059293ebafefbfd8cac494f43386c3f255861995ee7b48f9e89" +checksum = "b14659a7e902ea8a821ec217f36b168fb4c79020d91b912175ac188b6c364225" dependencies = [ "as_variant", "async-trait", - "bitflags 2.9.1", + "bitflags 2.9.4", "decancer", "eyeball", "eyeball-im", @@ -3139,7 +3185,7 @@ dependencies = [ "ruma", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", "unicode-normalization", @@ -3147,9 +3193,9 @@ dependencies = [ [[package]] name = "matrix-sdk-common" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065ac8905f199649e165d6233faa5b4eb9c7c117f61c9a5572250ae1feb9cd79" +checksum = "cdb33a986495135e217f28cfe0918bf7d01a9800e42f4ef88afbd48e23b8cc53" dependencies = [ "eyeball-im", "futures-core", @@ -3160,7 +3206,7 @@ dependencies = [ "ruma", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", "tracing-subscriber", @@ -3171,9 +3217,9 @@ dependencies = [ [[package]] name = "matrix-sdk-crypto" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e38551f3da5909ed8bd62a9b2bc3315df25386c410fd7116dc1824d42406fbfd" +checksum = "61bf6c3195de301c98339283413a4e9d9d63c4f214ef8955147643caab161256" dependencies = [ "aes", "aquamarine", @@ -3199,7 +3245,7 @@ dependencies = [ "serde_json", "sha2", "subtle", - "thiserror 2.0.12", + "thiserror 2.0.16", "time", "tokio", "tokio-stream", @@ -3212,9 +3258,9 @@ dependencies = [ [[package]] name = "matrix-sdk-indexeddb" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233b82cc549375e18ff1a0ccd5baf5db8ac4d44643b5b9b6bedffd74f72ed5f0" +checksum = "6e2752015e69b6b56a8df72e52f91a834771259f755eb1c65232b77348ffb16b" dependencies = [ "anyhow", "async-trait", @@ -3226,12 +3272,13 @@ dependencies = [ "js-sys", "matrix-sdk-crypto", "matrix-sdk-store-encryption", + "rmp-serde", "ruma", "serde", "serde-wasm-bindgen", "serde_json", "sha2", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", "wasm-bindgen", @@ -3241,9 +3288,9 @@ dependencies = [ [[package]] name = "matrix-sdk-sqlite" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2ff57473e92bad1b7320b3d70d640661b95064e091b925c5ef88acfa281853" +checksum = "662a128004b553196365d88ea46917047d7350a24dfe7ce829e7b78636673604" dependencies = [ "as_variant", "async-trait", @@ -3259,7 +3306,7 @@ dependencies = [ "serde", "serde_json", "serde_path_to_error", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", "vodozemac", @@ -3267,9 +3314,9 @@ dependencies = [ [[package]] name = "matrix-sdk-store-encryption" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2f3c5dfb6f61036290ee053f5cdc90ee672200e9254747b8eae922f00765f9" +checksum = "2e0aac550e685306fbbd57faae8f98af9812f19bbf0f83da7559d67cf4789679" dependencies = [ "base64 0.22.1", "blake3", @@ -3281,7 +3328,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "thiserror 2.0.12", + "thiserror 2.0.16", "zeroize", ] @@ -3377,7 +3424,7 @@ checksum = "8cbb03c35f23ec7d13f7870049803cd8829f5e60b69d38fa98f5e7876de9f34e" dependencies = [ "anymap2", "arboard", - "bitflags 2.9.1", + "bitflags 2.9.4", "crossterm", "derive_more", "editor-types", @@ -3483,12 +3530,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" dependencies = [ - "overload", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -3549,11 +3595,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.5.1", "libc", ] @@ -3601,7 +3647,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "objc2", "objc2-core-graphics", "objc2-foundation", @@ -3613,7 +3659,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "dispatch2", "objc2", ] @@ -3624,7 +3670,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "dispatch2", "objc2", "objc2-core-foundation", @@ -3643,7 +3689,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "block2", "libc", "objc2", @@ -3656,7 +3702,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "objc2", "objc2-core-foundation", ] @@ -3698,7 +3744,7 @@ version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "cfg-if", "foreign-types", "libc", @@ -3756,12 +3802,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "parking" version = "2.2.1" @@ -3840,9 +3880,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "petgraph" @@ -3869,7 +3909,6 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ - "phf_macros", "phf_shared 0.11.3", ] @@ -3913,19 +3952,6 @@ dependencies = [ "rand 0.8.5", ] -[[package]] -name = "phf_macros" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" -dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", - "proc-macro2", - "quote", - "syn 2.0.101", -] - [[package]] name = "phf_shared" version = "0.10.0" @@ -4216,7 +4242,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2 0.5.10", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", "web-time", @@ -4237,7 +4263,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.12", + "thiserror 2.0.16", "tinyvec", "tracing", "web-time", @@ -4356,7 +4382,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "cassowary", "compact_str", "crossterm", @@ -4488,7 +4514,7 @@ version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", ] [[package]] @@ -4504,9 +4530,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" dependencies = [ "aho-corasick", "memchr", @@ -4516,9 +4542,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" dependencies = [ "aho-corasick", "memchr", @@ -4533,9 +4559,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.18" +version = "0.12.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e98ff6b0dbbe4d5a37318f433d4fc82babd21631f194d370409ceb2e40b2f0b5" +checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" dependencies = [ "async-compression", "base64 0.22.1", @@ -4550,12 +4576,9 @@ dependencies = [ "hyper-rustls", "hyper-tls", "hyper-util", - "ipnet", "js-sys", "log", - "mime", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", @@ -4655,9 +4678,9 @@ dependencies = [ [[package]] name = "ruma" -version = "0.12.5" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1d47e42b7dea75a468dea63a230f51331c58d690ca018ea1c6ac782ea98880c" +checksum = "c7b698b728bc3747f564a9115c83b4f2e229b52377f6a1cca2e6add9cf4a13be" dependencies = [ "assign", "js_int", @@ -4667,14 +4690,15 @@ dependencies = [ "ruma-events", "ruma-federation-api", "ruma-html", + "ruma-signatures", "web-time", ] [[package]] name = "ruma-client-api" -version = "0.20.4" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a9e9c613cfda4923b851c5d8bc442305905bee4f0c2b924564b00e71636c8d4" +checksum = "b54e56c591f9ad686defb0bacbebba5c8882eb0c9f8734f6a080345b4e3dd941" dependencies = [ "as_variant", "assign", @@ -4689,16 +4713,16 @@ dependencies = [ "serde", "serde_html_form", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", "url", "web-time", ] [[package]] name = "ruma-common" -version = "0.15.4" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387e1898e868d32ff7b205e7db327361d5dcf635c00a8ae5865068607595a9cf" +checksum = "ac7f59b9f7639667d0d6ae3ae242c8912e9ed061cea1fbaf72710a402e83b53e" dependencies = [ "as_variant", "base64 0.22.1", @@ -4718,20 +4742,21 @@ dependencies = [ "serde", "serde_html_form", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", "time", "tracing", "url", "uuid", "web-time", "wildmatch", + "zeroize", ] [[package]] name = "ruma-events" -version = "0.30.4" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cdc7abec9bc2a9ca0b4831cc26ce97a6a8c39a0bde44a19281a719e861b4293" +checksum = "34fa815769ed4fe1ef5b50aa0ba6f350317c13b5a9f1e008b014f4a3ddf14204" dependencies = [ "as_variant", "indexmap", @@ -4744,56 +4769,62 @@ dependencies = [ "ruma-macros", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", "tracing", "url", "web-time", "wildmatch", + "zeroize", ] [[package]] name = "ruma-federation-api" -version = "0.11.2" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2a705c3911870782e036a3a8b676d0166c6c93800b84f6b8b23c981f78ef08" +checksum = "ecbc887ba1292e48e6363b29e0dec4571b52d2b5102ebf60068105efadaa6e0a" dependencies = [ + "headers", "http", + "http-auth", + "httparse", "js_int", + "memchr", "mime", "ruma-common", "ruma-events", "serde", "serde_json", + "thiserror 2.0.16", + "tracing", ] [[package]] name = "ruma-html" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "865afa2321e34fa836ea4c1d77ce0c2bb40f7d13fe18ee3e795091fd8d173a1d" +checksum = "6124d74847ea788601477c89a44485894432a806824cae93885c5825a8ae9dbc" dependencies = [ "as_variant", "html5ever 0.29.1", - "phf 0.11.3", "tracing", "wildmatch", ] [[package]] name = "ruma-identifiers-validation" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ad674b5e5368c53a2c90fde7dac7e30747004aaf7b1827b72874a25fc06d4d8" +checksum = "14a7b93ac1e571c585f8fa5cef09c07bb8a15529775fd56b9a3eac4f9233dff2" dependencies = [ "js_int", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] name = "ruma-macros" -version = "0.15.2" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ff13fbd6045a7278533390826de316d6116d8582ed828352661337b0c422e1c" +checksum = "0c9911c7188517f28505d2d513339511d00e0f50cec5c2dde820cd0ec7e6a833" dependencies = [ "cfg-if", "proc-macro-crate 3.3.0", @@ -4806,12 +4837,28 @@ dependencies = [ ] [[package]] -name = "rusqlite" -version = "0.35.0" +name = "ruma-signatures" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a22715a5d6deef63c637207afbe68d0c72c3f8d0022d7cf9714c442d6157606b" +checksum = "f47cd146d56ae6e7a4a8d912a30dfe57c70e5bf18806fdf617527d4d4f2dd2a4" dependencies = [ - "bitflags 2.9.1", + "base64 0.22.1", + "ed25519-dalek", + "pkcs8", + "rand 0.8.5", + "ruma-common", + "serde_json", + "sha2", + "thiserror 2.0.16", +] + +[[package]] +name = "rusqlite" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f" +dependencies = [ + "bitflags 2.9.4", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -4860,7 +4907,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "errno", "libc", "linux-raw-sys 0.4.15", @@ -4873,7 +4920,7 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "errno", "libc", "linux-raw-sys 0.9.4", @@ -4948,7 +4995,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "core-foundation", "core-foundation-sys", "libc", @@ -4973,10 +5020,11 @@ checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.226" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "0dca6411025b24b60bfa7ec1fe1f8e710ac09782dca409ee8237ba74b51295fd" dependencies = [ + "serde_core", "serde_derive", ] @@ -5001,10 +5049,19 @@ dependencies = [ ] [[package]] -name = "serde_derive" -version = "1.0.219" +name = "serde_core" +version = "1.0.226" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "ba2ba63999edb9dac981fb34b3e5c0d111a69b0924e253ed29d83f7c99e966a4" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.226" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8db53ae22f34573731bafa1db20f04027b2d25e02d8205921b569171699cdb33" dependencies = [ "proc-macro2", "quote", @@ -5026,14 +5083,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] @@ -5257,6 +5315,16 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "spki" version = "0.7.3" @@ -5429,9 +5497,9 @@ checksum = "83176759e9416cf81ee66cb6508dbfe9c96f20b8b56265a39917551c23c70964" [[package]] name = "tempfile" -version = "3.20.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand 2.3.0", "getrandom 0.3.3", @@ -5473,11 +5541,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.16", ] [[package]] @@ -5493,9 +5561,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" dependencies = [ "proc-macro2", "quote", @@ -5525,9 +5593,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.41" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", @@ -5542,15 +5610,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -5583,18 +5651,20 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.45.1" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "pin-project-lite", - "socket2 0.5.10", + "slab", + "socket2 0.6.0", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5642,9 +5712,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.15" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -5723,11 +5793,11 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdb0c213ca27a9f57ab69ddb290fd80d970922355b83ae380b395d3986b8a2e" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "bytes", "futures-util", "http", @@ -5809,9 +5879,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "nu-ansi-term", "sharded-slab", @@ -5974,9 +6044,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", @@ -6091,7 +6161,7 @@ dependencies = [ "serde_json", "sha2", "subtle", - "thiserror 2.0.12", + "thiserror 2.0.16", "x25519-dalek", "zeroize", ] @@ -6229,7 +6299,7 @@ version = "0.31.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978fa7c67b0847dbd6a9f350ca2569174974cd4082737054dbb7fbb79d7d9a61" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "rustix 0.38.44", "wayland-backend", "wayland-scanner", @@ -6241,7 +6311,7 @@ version = "0.32.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "779075454e1e9a521794fed15886323ea0feda3f8b0fc1390f5398141310422a" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "wayland-backend", "wayland-client", "wayland-scanner", @@ -6253,7 +6323,7 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1cb6cdc73399c0e06504c437fe3cf886f25568dd5454473d565085b36d6a8bbf" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "wayland-backend", "wayland-client", "wayland-protocols", @@ -6726,7 +6796,7 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", ] [[package]] @@ -6740,7 +6810,7 @@ dependencies = [ "os_pipe", "rustix 0.38.44", "tempfile", - "thiserror 2.0.12", + "thiserror 2.0.16", "tree_magic_mini", "wayland-backend", "wayland-client", diff --git a/Cargo.toml b/Cargo.toml index c14ea5a..c434360 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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"] diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 5457526..db377f9 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.85" +channel = "1.88" components = [ "clippy" ] diff --git a/src/base.rs b/src/base.rs index b195e6a..be23300 100644 --- a/src/base.rs +++ b/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); } } }, diff --git a/src/message/mod.rs b/src/message/mod.rs index 1e9725d..718c7a6 100644 --- a/src/message/mod.rs +++ b/src/message/mod.rs @@ -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; diff --git a/src/tests.rs b/src/tests.rs index 4a31d64..e9b0502 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -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(); diff --git a/src/windows/mod.rs b/src/windows/mod.rs index 2677e1f..e677a4d 100644 --- a/src/windows/mod.rs +++ b/src/windows/mod.rs @@ -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", diff --git a/src/windows/room/space.rs b/src/windows/room/space.rs index 28ba203..27b9fb9 100644 --- a/src/windows/room/space.rs +++ b/src/windows/room/space.rs @@ -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 diff --git a/src/worker.rs b/src/worker.rs index 78fad31..11e64d3 100644 --- a/src/worker.rs +++ b/src/worker.rs @@ -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) }