diff --git a/Cargo.lock b/Cargo.lock index dabd2ab3..40a96578 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -48,18 +48,18 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.18" +version = "0.7.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" dependencies = [ "memchr", ] [[package]] name = "ammonia" -version = "3.2.0" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5ed2509ee88cc023cccee37a6fab35826830fe8b748b3869790e7720c2c4a74" +checksum = "4b477377562f3086b7778d241786e9406b883ccfaa03557c0fe0924b9349f13a" dependencies = [ "html5ever 0.26.0", "maplit", @@ -68,6 +68,15 @@ dependencies = [ "url", ] +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "ansi_term" version = "0.12.1" @@ -79,9 +88,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.59" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91f1f46651137be86f3a2b9a8359f9ab421d04d941c62b5982e1ca21113adf9" +checksum = "b9a8f622bcf6ff3df478e9deba3e03e4e04b300f8e6a139e192c05fa3490afc7" [[package]] name = "anymap2" @@ -143,9 +152,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "1.6.1" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319" +checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28" dependencies = [ "concurrent-queue", "event-listener", @@ -168,10 +177,11 @@ dependencies = [ [[package]] name = "async-io" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5e18f61464ae81cde0a23e713ae8fd299580c54d697a35820cfd0625b8b0e07" +checksum = "83e21f3a490c72b3b0cf44962180e60045de2925d8dff97918f7ee43c8f637c7" dependencies = [ + "autocfg", "concurrent-queue", "futures-lite", "libc", @@ -206,9 +216,9 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7d78656ba01f1b93024b7c3a0467f1608e4be67d725749fdcd7d2c7678fd7a2" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -227,9 +237,9 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -244,9 +254,9 @@ version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -297,9 +307,9 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "base64ct" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bdca834647821e0b13d9539a8634eb62d3501b6b6c2cec1722786ee6671b851" +checksum = "ea2b2456fd614d856680dcd9fcc660a51a820fa09daef2e49772b56a193c8474" [[package]] name = "bindgen" @@ -316,8 +326,8 @@ dependencies = [ "lazycell", "log", "peeking_take_while", - "proc-macro2 1.0.42", - "quote 1.0.20", + "proc-macro2 1.0.43", + "quote 1.0.21", "regex", "rustc-hash", "shlex", @@ -361,9 +371,9 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" dependencies = [ "generic-array", ] @@ -379,15 +389,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.10.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" +checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" [[package]] name = "bytemuck" -version = "1.11.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5377c8865e74a160d21f29c2d40669f53286db6eab59b88540cbb12ffc8b835" +checksum = "2f5715e491b5a1598fc2bef5a606847b5dc1d48ea625bd3c02c00de8285591da" [[package]] name = "byteorder" @@ -509,11 +519,11 @@ checksum = "17cc5e6b5ab06331c33589842070416baa137e8b0eb912b008cfd4a78ada7919" [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1" dependencies = [ - "libc", + "iana-time-zone", "num-integer", "num-traits", "winapi", @@ -615,9 +625,9 @@ checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpufeatures" -version = "0.2.2" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" dependencies = [ "libc", ] @@ -727,10 +737,10 @@ checksum = "649c91bc01e8b1eac09fb91e8dbc7d517684ca6be8ebc75bb9cafc894f9fdb6f" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.42", - "quote 1.0.20", + "proc-macro2 1.0.43", + "quote 1.0.21", "strsim 0.10.0", - "syn 1.0.98", + "syn 1.0.99", ] [[package]] @@ -740,19 +750,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddfc69c5bfcbd2fc09a0f38451d2daf0e372e367986a83906d1b0dbc88134fb5" dependencies = [ "darling_core", - "quote 1.0.20", - "syn 1.0.98", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] name = "dashmap" -version = "5.3.4" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3495912c9c1ccf2e18976439f4443f3fee0fd61f424ff99fde6a66b15ecb448f" +checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" dependencies = [ "cfg-if 1.0.0", "hashbrown 0.12.3", "lock_api", + "once_cell", "parking_lot_core 0.9.3", ] @@ -781,9 +792,9 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -802,9 +813,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f91d4cfa921f1c05904dc3c57b4a32c38aed3340cce209f3a6fd1478babafc4" dependencies = [ "darling", - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -814,7 +825,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f0314b72bed045f3a68671b3c86328386762c93f82d98c65c3cb5e5f573dd68" dependencies = [ "derive_builder_core", - "syn 1.0.98", + "syn 1.0.99", ] [[package]] @@ -832,7 +843,7 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" dependencies = [ - "block-buffer 0.10.2", + "block-buffer 0.10.3", "crypto-common", "subtle", ] @@ -857,15 +868,21 @@ dependencies = [ "winapi", ] +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + [[package]] name = "displaydoc" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -895,9 +912,9 @@ dependencies = [ [[package]] name = "either" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" [[package]] name = "encoding_rs" @@ -924,9 +941,9 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -1011,11 +1028,10 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" dependencies = [ - "matches", "percent-encoding", ] @@ -1049,6 +1065,7 @@ dependencies = [ "qrcode", "rand 0.8.5", "regex", + "rqrr", "ruma", "serde", "serde_json", @@ -1093,9 +1110,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.21" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" +checksum = "7f21eda599937fba36daeb58a22e8f5cee2d14c4a17b5b7739c7c8e5e3b8230c" dependencies = [ "futures-channel", "futures-core", @@ -1108,9 +1125,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.21" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +checksum = "30bdd20c28fadd505d0fd6712cdfcb0d4b5648baf45faef7f852afb2399bb050" dependencies = [ "futures-core", "futures-sink", @@ -1118,15 +1135,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.21" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" +checksum = "4e5aa3de05362c3fb88de6531e6296e85cde7739cccad4b9dfeeb7f6ebce56bf" [[package]] name = "futures-executor" -version = "0.3.21" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" +checksum = "9ff63c23854bee61b6e9cd331d523909f238fc7636290b96826e9cfa5faa00ab" dependencies = [ "futures-core", "futures-task", @@ -1135,9 +1152,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.21" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" +checksum = "bbf4d2a7a308fd4578637c0b17c7e1c7ba127b8f6ba00b29f717e9655d85eb68" [[package]] name = "futures-lite" @@ -1156,32 +1173,45 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.21" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" +checksum = "42cd15d1c7456c04dbdf7e88bcd69760d74f3a798d6444e16974b505b0e62f17" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", +] + +[[package]] +name = "futures-signals" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3acc659ba666cff13fdf65242d16428f2f11935b688f82e4024ad39667a5132" +dependencies = [ + "discard", + "futures-channel", + "futures-core", + "futures-util", + "pin-project", ] [[package]] name = "futures-sink" -version = "0.3.21" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" +checksum = "21b20ba5a92e727ba30e72834706623d94ac93a725410b6a6b6fbc1b07f7ba56" [[package]] name = "futures-task" -version = "0.3.21" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" +checksum = "a6508c467c73851293f390476d4491cf4d227dbabcd4170f3bb6044959b294f1" [[package]] name = "futures-util" -version = "0.3.21" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +checksum = "44fb6cb1be61cc1d2e43b262516aafcf63b241cffdb1d3fa115f91d9c7b09c90" dependencies = [ "futures-channel", "futures-core", @@ -1342,9 +1372,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.5" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" dependencies = [ "typenum", "version_check", @@ -1466,9 +1496,9 @@ dependencies = [ "heck", "proc-macro-crate", "proc-macro-error", - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -1738,10 +1768,10 @@ dependencies = [ "anyhow", "proc-macro-crate", "proc-macro-error", - "proc-macro2 1.0.42", + "proc-macro2 1.0.43", "quick-xml", - "quote 1.0.20", - "syn 1.0.98", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -1765,9 +1795,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" +checksum = "5ca32592cf21ac7ccab1825cd87f6c9b3d9022c44d086172ed0966bec8af30be" dependencies = [ "bytes", "fnv", @@ -1778,7 +1808,7 @@ dependencies = [ "indexmap", "slab", "tokio", - "tokio-util 0.7.3", + "tokio-util 0.7.4", "tracing", ] @@ -1802,9 +1832,9 @@ dependencies = [ [[package]] name = "headers" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cff78e5788be1e0ab65b04d306b2ed5092c815ec97ec70f4ebd5aee158aa55d" +checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" dependencies = [ "base64", "bitflags", @@ -1813,7 +1843,7 @@ dependencies = [ "http", "httpdate", "mime", - "sha-1", + "sha1 0.10.4", ] [[package]] @@ -1889,9 +1919,9 @@ dependencies = [ "log", "mac", "markup5ever 0.10.1", - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -1903,9 +1933,9 @@ dependencies = [ "log", "mac", "markup5ever 0.11.0", - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -1932,9 +1962,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" @@ -1985,6 +2015,20 @@ dependencies = [ "tokio-native-tls", ] +[[package]] +name = "iana-time-zone" +version = "0.1.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c495f162af0bf17656d0014a0eded5f3cd2f365fdd204548c2869db89359dc7" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "js-sys", + "once_cell", + "wasm-bindgen", + "winapi", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1993,11 +2037,10 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" dependencies = [ - "matches", "unicode-bidi", "unicode-normalization", ] @@ -2024,8 +2067,7 @@ dependencies = [ [[package]] name = "indexed_db_futures" version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26ac735f676c52305becf53264b91cea9866a8de61ccbf464405b377b9cbca9" +source = "git+https://github.com/Hywan/rust-indexed-db?branch=feat-factory-nodejs#5dab67890cea0ab88b967031adc09179a537d77c" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -2085,9 +2127,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" [[package]] name = "jpeg-decoder" @@ -2100,9 +2142,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.59" +version = "0.3.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" dependencies = [ "wasm-bindgen", ] @@ -2172,9 +2214,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.126" +version = "0.2.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" [[package]] name = "libloading" @@ -2294,9 +2336,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +checksum = "9f80bf5aacaf25cbfc8210d1cfb718f2bf3b11c4c54e5afe36c236853a8ec390" dependencies = [ "autocfg", "scopeguard", @@ -2390,16 +2432,10 @@ dependencies = [ "xml5ever", ] -[[package]] -name = "matches" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" - [[package]] name = "matrix-sdk" version = "0.5.0" -source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#165973121c7aba84c124ece2878b251921586603" +source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#97995b7bf6ac5d5810016458510ae02eb87de86b" dependencies = [ "anymap2", "async-once-cell", @@ -2409,7 +2445,9 @@ dependencies = [ "bytes", "dashmap", "event-listener", + "futures-channel", "futures-core", + "futures-signals", "futures-util", "http", "matrix-sdk-base", @@ -2435,13 +2473,14 @@ dependencies = [ [[package]] name = "matrix-sdk-base" version = "0.5.1" -source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#165973121c7aba84c124ece2878b251921586603" +source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#97995b7bf6ac5d5810016458510ae02eb87de86b" dependencies = [ "async-stream", "async-trait", "dashmap", "futures-channel", "futures-core", + "futures-signals", "futures-util", "lru 0.7.8", "matrix-sdk-common", @@ -2458,7 +2497,7 @@ dependencies = [ [[package]] name = "matrix-sdk-common" version = "0.5.0" -source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#165973121c7aba84c124ece2878b251921586603" +source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#97995b7bf6ac5d5810016458510ae02eb87de86b" dependencies = [ "async-lock", "futures-core", @@ -2474,7 +2513,7 @@ dependencies = [ [[package]] name = "matrix-sdk-crypto" version = "0.5.0" -source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#165973121c7aba84c124ece2878b251921586603" +source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#97995b7bf6ac5d5810016458510ae02eb87de86b" dependencies = [ "aes", "async-trait", @@ -2493,7 +2532,7 @@ dependencies = [ "ruma", "serde", "serde_json", - "sha2 0.10.2", + "sha2 0.10.5", "thiserror", "tokio", "tracing", @@ -2504,7 +2543,7 @@ dependencies = [ [[package]] name = "matrix-sdk-indexeddb" version = "0.1.0" -source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#165973121c7aba84c124ece2878b251921586603" +source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#97995b7bf6ac5d5810016458510ae02eb87de86b" dependencies = [ "anyhow", "async-trait", @@ -2530,13 +2569,11 @@ dependencies = [ [[package]] name = "matrix-sdk-qrcode" version = "0.3.0" -source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#165973121c7aba84c124ece2878b251921586603" +source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#97995b7bf6ac5d5810016458510ae02eb87de86b" dependencies = [ "base64", "byteorder", - "image", "qrcode", - "rqrr", "ruma-common", "thiserror", "vodozemac", @@ -2545,7 +2582,7 @@ dependencies = [ [[package]] name = "matrix-sdk-sled" version = "0.1.0" -source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#165973121c7aba84c124ece2878b251921586603" +source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#97995b7bf6ac5d5810016458510ae02eb87de86b" dependencies = [ "async-stream", "async-trait", @@ -2570,7 +2607,7 @@ dependencies = [ [[package]] name = "matrix-sdk-store-encryption" version = "0.1.0" -source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#165973121c7aba84c124ece2878b251921586603" +source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#97995b7bf6ac5d5810016458510ae02eb87de86b" dependencies = [ "blake3", "chacha20poly1305", @@ -2580,7 +2617,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_json", - "sha2 0.10.2", + "sha2 0.10.5", "thiserror", "zeroize", ] @@ -2797,9 +2834,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -2833,9 +2870,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.13.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" +checksum = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0" [[package]] name = "opaque-debug" @@ -2864,9 +2901,9 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -2999,9 +3036,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" +checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" [[package]] name = "pbkdf2" @@ -3012,7 +3049,7 @@ dependencies = [ "digest 0.10.3", "hmac", "password-hash", - "sha2 0.10.2", + "sha2 0.10.5", ] [[package]] @@ -3023,15 +3060,15 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pest" -version = "2.2.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69486e2b8c2d2aeb9762db7b4e00b0331156393555cff467f4163ff06821eef8" +checksum = "cb779fcf4bb850fbbb0edc96ff6cf34fd90c4b1a112ce042653280d9a7364048" dependencies = [ "thiserror", "ucd-trie", @@ -3115,22 +3152,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78203e83c48cffbe01e4a2d35d566ca4de445d79a85372fc64e378bfc812a260" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -3204,10 +3241,11 @@ dependencies = [ [[package]] name = "polling" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259" +checksum = "899b00b9c8ab553c743b3e11e87c5c7d423b2a2de229ba95b24a756344748011" dependencies = [ + "autocfg", "cfg-if 1.0.0", "libc", "log", @@ -3246,10 +3284,11 @@ checksum = "c6fa0831dd7cc608c38a5e323422a0077678fa5744aa2be4ad91c4ece8eec8d5" [[package]] name = "proc-macro-crate" -version = "1.1.3" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" dependencies = [ + "once_cell", "thiserror", "toml", ] @@ -3261,9 +3300,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", "version_check", ] @@ -3273,8 +3312,8 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", + "proc-macro2 1.0.43", + "quote 1.0.21", "version_check", ] @@ -3289,9 +3328,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.42" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c278e965f1d8cf32d6e0e96de3d3e79712178ae67986d9cf9151f51e95aac89b" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ "unicode-ident", ] @@ -3314,9 +3353,9 @@ checksum = "7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7cc" dependencies = [ "anyhow", "itertools", - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -3360,11 +3399,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ - "proc-macro2 1.0.42", + "proc-macro2 1.0.43", ] [[package]] @@ -3570,10 +3609,11 @@ dependencies = [ [[package]] name = "ruma" version = "0.6.3" -source = "git+https://github.com/ruma/ruma?rev=ca8c66c885241a7ba3805399604eda4a38979f6b#ca8c66c885241a7ba3805399604eda4a38979f6b" +source = "git+https://github.com/ruma/ruma?rev=c745d3baf720b38a254e640a526717864e87a065#c745d3baf720b38a254e640a526717864e87a065" dependencies = [ "assign", "js_int", + "js_option", "ruma-client-api", "ruma-common", "ruma-federation-api", @@ -3583,7 +3623,7 @@ dependencies = [ [[package]] name = "ruma-client-api" version = "0.14.1" -source = "git+https://github.com/ruma/ruma?rev=ca8c66c885241a7ba3805399604eda4a38979f6b#ca8c66c885241a7ba3805399604eda4a38979f6b" +source = "git+https://github.com/ruma/ruma?rev=c745d3baf720b38a254e640a526717864e87a065#c745d3baf720b38a254e640a526717864e87a065" dependencies = [ "assign", "bytes", @@ -3599,7 +3639,7 @@ dependencies = [ [[package]] name = "ruma-common" version = "0.9.2" -source = "git+https://github.com/ruma/ruma?rev=ca8c66c885241a7ba3805399604eda4a38979f6b#ca8c66c885241a7ba3805399604eda4a38979f6b" +source = "git+https://github.com/ruma/ruma?rev=c745d3baf720b38a254e640a526717864e87a065#c745d3baf720b38a254e640a526717864e87a065" dependencies = [ "base64", "bytes", @@ -3629,7 +3669,7 @@ dependencies = [ [[package]] name = "ruma-federation-api" version = "0.5.0" -source = "git+https://github.com/ruma/ruma?rev=ca8c66c885241a7ba3805399604eda4a38979f6b#ca8c66c885241a7ba3805399604eda4a38979f6b" +source = "git+https://github.com/ruma/ruma?rev=c745d3baf720b38a254e640a526717864e87a065#c745d3baf720b38a254e640a526717864e87a065" dependencies = [ "js_int", "ruma-common", @@ -3640,7 +3680,7 @@ dependencies = [ [[package]] name = "ruma-identifiers-validation" version = "0.8.1" -source = "git+https://github.com/ruma/ruma?rev=ca8c66c885241a7ba3805399604eda4a38979f6b#ca8c66c885241a7ba3805399604eda4a38979f6b" +source = "git+https://github.com/ruma/ruma?rev=c745d3baf720b38a254e640a526717864e87a065#c745d3baf720b38a254e640a526717864e87a065" dependencies = [ "js_int", "thiserror", @@ -3649,22 +3689,22 @@ dependencies = [ [[package]] name = "ruma-macros" version = "0.9.2" -source = "git+https://github.com/ruma/ruma?rev=ca8c66c885241a7ba3805399604eda4a38979f6b#ca8c66c885241a7ba3805399604eda4a38979f6b" +source = "git+https://github.com/ruma/ruma?rev=c745d3baf720b38a254e640a526717864e87a065#c745d3baf720b38a254e640a526717864e87a065" dependencies = [ "once_cell", "proc-macro-crate", - "proc-macro2 1.0.42", - "quote 1.0.20", + "proc-macro2 1.0.43", + "quote 1.0.21", "ruma-identifiers-validation", "serde", - "syn 1.0.98", + "syn 1.0.99", "toml", ] [[package]] name = "ruma-push-gateway-api" version = "0.5.0" -source = "git+https://github.com/ruma/ruma?rev=ca8c66c885241a7ba3805399604eda4a38979f6b#ca8c66c885241a7ba3805399604eda4a38979f6b" +source = "git+https://github.com/ruma/ruma?rev=c745d3baf720b38a254e640a526717864e87a065#c745d3baf720b38a254e640a526717864e87a065" dependencies = [ "js_int", "ruma-common", @@ -3689,9 +3729,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" [[package]] name = "schannel" @@ -3723,9 +3763,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "security-framework" -version = "2.6.1" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" dependencies = [ "bitflags", "core-foundation", @@ -3764,38 +3804,38 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.141" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7af873f2c95b99fcb0bd0fe622a43e29514658873c8ceba88c4cb88833a22500" +checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" dependencies = [ "serde_derive", ] [[package]] name = "serde_bytes" -version = "0.11.6" +version = "0.11.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212e73464ebcde48d723aa02eb270ba62eff38a9b732df31f33f1b4e145f3a54" +checksum = "cfc50e8183eeeb6178dcb167ae34a8051d63535023ae38b5d8d12beae193d37b" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.141" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75743a150d003dd863b51dc809bcad0d73f2102c53632f1e954e738192a3413f" +checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] name = "serde_json" -version = "1.0.82" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7" +checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44" dependencies = [ "itoa", "ryu", @@ -3804,13 +3844,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2ad84e47328a31223de7fed7a4f5087f2d6ddfe586cf3ca25b7a165bc0a5aed" +checksum = "1fe39d9fbb0ebf5eb2c7cb7e2a47e4f462fad1379f1166b8ae49ad9eae89a7ca" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -3826,23 +3866,23 @@ dependencies = [ ] [[package]] -name = "sha-1" -version = "0.10.0" +name = "sha1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.10.3", + "sha1_smol", ] [[package]] name = "sha1" -version = "0.6.1" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +checksum = "006769ba83e921b3085caa8334186b00cf92b4cb1a6cf4632fbccc8eff5c7549" dependencies = [ - "sha1_smol", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.3", ] [[package]] @@ -3866,9 +3906,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.2" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +checksum = "cf9db03534dff993187064c4e0c05a5708d2a9728ace9a8959b77bedf415dac5" dependencies = [ "cfg-if 1.0.0", "cpufeatures", @@ -3902,9 +3942,9 @@ dependencies = [ [[package]] name = "signature" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4" +checksum = "f0ea32af43239f0d353a7dd75a22d94c329c8cdaafdcb4c1c1335aa10c298a4a" [[package]] name = "siphasher" @@ -3945,9 +3985,9 @@ checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" [[package]] name = "socket2" -version = "0.4.4" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" dependencies = [ "libc", "winapi", @@ -4026,8 +4066,8 @@ checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" dependencies = [ "phf_generator 0.10.0", "phf_shared 0.10.0", - "proc-macro2 1.0.42", - "quote 1.0.20", + "proc-macro2 1.0.43", + "quote 1.0.21", ] [[package]] @@ -4061,12 +4101,12 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", + "proc-macro2 1.0.43", + "quote 1.0.21", "unicode-ident", ] @@ -4076,9 +4116,9 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", "unicode-xid 0.2.3", ] @@ -4146,22 +4186,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "8c1b05ca9d106ba7d2e31a9dab4a64e7be2cce415321966ea3132c49a656e252" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "e8f2591983642de85c921015f3f070c665a197ed69e417af436115e3a1407487" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -4212,9 +4252,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.20.1" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a8325f63a7d4774dd041e363b2409ed1c5cbbd0f867795e661df066b2b0a581" +checksum = "89797afd69d206ccd11fb0ea560a44bbb87731d020670e79416d442919257d42" dependencies = [ "autocfg", "bytes", @@ -4277,9 +4317,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" +checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" dependencies = [ "bytes", "futures-core", @@ -4323,9 +4363,9 @@ version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] [[package]] @@ -4377,9 +4417,9 @@ checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "ucd-trie" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89570599c4fe5585de2b388aab47e99f7fa4e9238a1399f707a02e356058141c" +checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" [[package]] name = "uds_windows" @@ -4408,9 +4448,9 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" [[package]] name = "unicode-normalization" @@ -4451,13 +4491,12 @@ dependencies = [ [[package]] name = "url" -version = "2.2.2" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" dependencies = [ "form_urlencoded", "idna", - "matches", "percent-encoding", ] @@ -4518,7 +4557,7 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "vodozemac" version = "0.2.0" -source = "git+https://github.com/matrix-org/vodozemac/?rev=18bcbc3359298894415931547ea41abb75af2d4a#18bcbc3359298894415931547ea41abb75af2d4a" +source = "git+https://github.com/matrix-org/vodozemac/?rev=ad1f098aff2a0b69aa5822c4e0679089a9fa4a86#ad1f098aff2a0b69aa5822c4e0679089a9fa4a86" dependencies = [ "aes", "arrayvec", @@ -4532,7 +4571,8 @@ dependencies = [ "rand 0.7.3", "serde", "serde_json", - "sha2 0.10.2", + "sha2 0.10.5", + "subtle", "thiserror", "x25519-dalek", "zeroize", @@ -4608,9 +4648,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" dependencies = [ "cfg-if 1.0.0", "serde", @@ -4620,24 +4660,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.32" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa76fb221a1f8acddf5b54ace85912606980ad661ac7a503b4570ffd3a624dad" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -4647,32 +4687,32 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" dependencies = [ - "quote 1.0.20", + "quote 1.0.21", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" [[package]] name = "wasm-timer" @@ -4691,9 +4731,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.59" +version = "0.3.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" dependencies = [ "js-sys", "wasm-bindgen", @@ -4716,13 +4756,13 @@ dependencies = [ [[package]] name = "which" -version = "4.2.5" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae" +checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" dependencies = [ "either", - "lazy_static", "libc", + "once_cell", ] [[package]] @@ -4868,7 +4908,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_repr", - "sha1", + "sha1 0.6.1", "static_assertions", "tracing", "uds_windows", @@ -4885,10 +4925,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f8fb5186d1c87ae88cf234974c240671238b4a679158ad3b94ec465237349a6" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.42", - "quote 1.0.20", + "proc-macro2 1.0.43", + "quote 1.0.21", "regex", - "syn 1.0.98", + "syn 1.0.99", ] [[package]] @@ -4917,9 +4957,9 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" dependencies = [ - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", "synstructure", ] @@ -4944,7 +4984,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08e977eaa3af652f63d479ce50d924254ad76722a6289ec1a1eac3231ca30430" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.42", - "quote 1.0.20", - "syn 1.0.98", + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", ] diff --git a/Cargo.toml b/Cargo.toml index 0be2a9de..d053f37e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,6 +49,7 @@ regex = "1.5.4" mime_guess = "2.0.3" num_enum = "0.5.6" thiserror = "1.0.25" +rqrr = "0.4.0" [dependencies.sourceview] package = "sourceview5" @@ -74,5 +75,5 @@ features = ["socks", "sso-login", "markdown", "qrcode", "experimental-timeline"] [dependencies.ruma] git = "https://github.com/ruma/ruma" -rev = "ca8c66c885241a7ba3805399604eda4a38979f6b" +rev = "c745d3baf720b38a254e640a526717864e87a065" features = ["unstable-pre-spec", "client-api-c"] diff --git a/src/contrib/qr_code_scanner/qr_code_detector.rs b/src/contrib/qr_code_scanner/qr_code_detector.rs index c16005f5..a92f546c 100644 --- a/src/contrib/qr_code_scanner/qr_code_detector.rs +++ b/src/contrib/qr_code_scanner/qr_code_detector.rs @@ -2,12 +2,16 @@ use std::convert::AsRef; use glib::Sender; use gst_video::{video_frame::VideoFrameRef, VideoInfo}; +use image::{GenericImage, GenericImageView, Luma}; use log::debug; -use matrix_sdk::encryption::verification::QrVerificationData; +use matrix_sdk::encryption::verification::{DecodingError, QrVerificationData}; +use thiserror::Error; use super::*; use crate::contrib::qr_code_scanner::camera_paintable::Action; +const HEADER: &[u8] = b"MATRIX"; + mod imp { use std::sync::Mutex; @@ -104,7 +108,7 @@ mod imp { let image = samples.as_view_mut::>().unwrap(); - if let Ok(code) = QrVerificationData::from_luma(image) { + if let Ok(code) = decode_qr(image) { let mut previous_code = self.code.lock().unwrap(); if previous_code.as_ref() != Some(&code) { previous_code.replace(code.clone()); @@ -138,3 +142,43 @@ impl QrCodeDetector { sink } } + +// From https://github.com/matrix-org/matrix-rust-sdk/blob/79d13148fbba58db0ff5f62b27e7856cbbbe13c2/crates/matrix-sdk-qrcode/src/utils.rs#L81-L104 +pub(crate) fn decode_qr(image: I) -> Result +where + I: GenericImage> + GenericImageView>, +{ + let mut image = rqrr::PreparedImage::prepare(image); + let grids = image.detect_grids(); + + let mut error = None; + + for grid in grids { + let mut decoded = Vec::new(); + + match grid.decode_to(&mut decoded) { + Ok(_) => { + if decoded.starts_with(HEADER) { + return QrVerificationData::from_bytes(decoded).map_err(Into::into); + } + } + Err(e) => error = Some(e), + } + } + + Err(error + .map(|e| e.into()) + .unwrap_or_else(|| DecodingError::Header.into())) +} + +/// All possible errors when decoding a QR Code. +#[derive(Debug, Error)] +pub enum QrDecodingError { + /// An error occurred when decoding the QR data. + #[error(transparent)] + Matrix(#[from] DecodingError), + + /// An error occurred when decoding the QR image. + #[error(transparent)] + Rqrr(#[from] rqrr::DeQRError), +} diff --git a/src/session/account_settings/devices_page/device.rs b/src/session/account_settings/devices_page/device.rs index 2930a64a..f426c816 100644 --- a/src/session/account_settings/devices_page/device.rs +++ b/src/session/account_settings/devices_page/device.rs @@ -208,6 +208,6 @@ impl Device { self.imp() .crypto_device .get() - .map_or(false, |device| device.verified()) + .map_or(false, |device| device.is_verified()) } } diff --git a/src/session/account_settings/user_page/mod.rs b/src/session/account_settings/user_page/mod.rs index 44f29197..b796d63e 100644 --- a/src/session/account_settings/user_page/mod.rs +++ b/src/session/account_settings/user_page/mod.rs @@ -1,4 +1,4 @@ -use std::{fs::File, time::Duration}; +use std::time::Duration; use adw::{prelude::*, subclass::prelude::*}; use gettextrs::gettext; @@ -267,13 +267,15 @@ impl UserPage { .and_then(|info| info.content_type()) .and_then(|content_type| gio::content_type_get_mime_type(&content_type)) .unwrap(); - let mut file = File::open(file.path().unwrap()).unwrap(); + let (data, _) = file.load_contents_future().await.unwrap(); let client_clone = client.clone(); - let handle = - spawn_tokio!( - async move { client_clone.upload(&mime.parse().unwrap(), &mut file).await } - ); + let handle = spawn_tokio!(async move { + client_clone + .media() + .upload(&mime.parse().unwrap(), &data) + .await + }); let uri = match handle.await.unwrap() { Ok(res) => res.content_uri, diff --git a/src/session/avatar.rs b/src/session/avatar.rs index 0efadb6b..8df52fbc 100644 --- a/src/session/avatar.rs +++ b/src/session/avatar.rs @@ -170,7 +170,7 @@ impl Avatar { }), }; let handle = - spawn_tokio!(async move { client.get_media_content(&request, true).await }); + spawn_tokio!(async move { client.media().get_media_content(&request, true).await }); spawn!( glib::PRIORITY_LOW, @@ -267,7 +267,7 @@ where }; content.url = uri.clone(); - joined_room.send_state_event(content, "").await?; + joined_room.send_state_event(content).await?; Ok(uri) } @@ -285,7 +285,8 @@ where info!("Uploading avatar from file {:?}", filename); // TODO: Use blurhash let response = matrix_client - .upload(&content_type.parse()?, &mut image.as_slice()) + .media() + .upload(&content_type.parse()?, &image) .await?; Ok(response.content_uri) } diff --git a/src/session/content/room_history/item_row.rs b/src/session/content/room_history/item_row.rs index ca7d9513..a57c270f 100644 --- a/src/session/content/room_history/item_row.rs +++ b/src/session/content/room_history/item_row.rs @@ -1,7 +1,7 @@ use adw::{prelude::*, subclass::prelude::*}; use gettextrs::gettext; use gtk::{gio, glib, glib::clone}; -use matrix_sdk::ruma::events::AnySyncRoomEvent; +use matrix_sdk::ruma::events::AnySyncTimelineEvent; use crate::{ components::{ContextMenuBin, ContextMenuBinExt, ContextMenuBinImpl, ReactionChooser}, @@ -287,7 +287,7 @@ impl ItemRow { fn set_event_widget(&self, event: &SupportedEvent) { match event.matrix_event() { - AnySyncRoomEvent::State(state) => { + AnySyncTimelineEvent::State(state) => { let child = if let Some(Ok(child)) = self.child().map(|w| w.downcast::()) { child diff --git a/src/session/content/room_history/message_row/audio.rs b/src/session/content/room_history/message_row/audio.rs index c3dc5d0a..9069765f 100644 --- a/src/session/content/room_history/message_row/audio.rs +++ b/src/session/content/room_history/message_row/audio.rs @@ -219,7 +219,7 @@ impl MessageAudio { } let client = session.client(); - let handle = spawn_tokio!(async move { client.get_file(audio, true).await }); + let handle = spawn_tokio!(async move { client.media().get_file(audio, true).await }); spawn!( glib::PRIORITY_LOW, diff --git a/src/session/content/room_history/message_row/media.rs b/src/session/content/room_history/message_row/media.rs index d2f907fc..cc7abf28 100644 --- a/src/session/content/room_history/message_row/media.rs +++ b/src/session/content/room_history/message_row/media.rs @@ -379,11 +379,11 @@ impl MessageMedia { { self.set_state(MediaState::Loading); - let client = session.client(); + let media = session.client().media(); let handle = spawn_tokio!(async move { let thumbnail = if media_type != MediaType::Video && content.thumbnail_source().is_some() { - client + media .get_thumbnail( content.clone(), MediaThumbnailSize { @@ -405,7 +405,7 @@ impl MessageMedia { Ok((Some(data), id)) } else { let id = media_type_uid(content.source()); - client.get_file(content, true).await.map(|data| (data, id)) + media.get_file(content, true).await.map(|data| (data, id)) } }); diff --git a/src/session/mod.rs b/src/session/mod.rs index d26c049b..f59b08bb 100644 --- a/src/session/mod.rs +++ b/src/session/mod.rs @@ -45,7 +45,7 @@ use matrix_sdk::{ }, RoomId, }, - store::{MigrationConflictStrategy, OpenStoreError, StateStore}, + store::{MigrationConflictStrategy, OpenStoreError, SledStateStore}, Client, ClientBuildError, Error, HttpError, RumaApiError, StoreError, }; use rand::{distributions::Alphanumeric, thread_rng, Rng}; @@ -462,6 +462,7 @@ impl Session { user_id: session.user_id.clone(), device_id: session.device_id.clone(), access_token: session.secret.access_token.clone(), + refresh_token: None, }) .await .map(|_| (client, session)) @@ -923,30 +924,29 @@ impl Session { glib::PRIORITY_DEFAULT_IDLE, clone!(@weak self as obj => async move { let obj_weak = glib::SendWeakRef::from(obj.downgrade()); - obj.client().add_event_handler( - move |event: GlobalAccountDataEvent| { - let obj_weak = obj_weak.clone(); - async move { - let ctx = glib::MainContext::default(); - ctx.spawn(async move { - spawn!(async move { - if let Some(session) = obj_weak.upgrade() { - let room_ids = event.content.iter().fold(HashSet::new(), |mut acc, (_, rooms)| { - acc.extend(rooms); - acc - }); - for room_id in room_ids { - if let Some(room) = session.room_list().get(room_id) { - room.load_category(); - } + obj.client().add_event_handler( + move |event: GlobalAccountDataEvent| { + let obj_weak = obj_weak.clone(); + async move { + let ctx = glib::MainContext::default(); + ctx.spawn(async move { + spawn!(async move { + if let Some(session) = obj_weak.upgrade() { + let room_ids = event.content.iter().fold(HashSet::new(), |mut acc, (_, rooms)| { + acc.extend(rooms); + acc + }); + for room_id in room_ids { + if let Some(room) = session.room_list().get(room_id) { + room.load_category(); } } - }); + } }); - } - }, - ) - .await; + }); + } + }, + ); }) ); } @@ -955,21 +955,19 @@ impl Session { let session_weak = glib::SendWeakRef::from(self.downgrade()); let client = self.client(); spawn_tokio!(async move { - client - .add_event_handler(move |_: SyncRoomEncryptionEvent, matrix_room: MatrixRoom| { - let session_weak = session_weak.clone(); - async move { - let ctx = glib::MainContext::default(); - ctx.spawn(async move { - if let Some(session) = session_weak.upgrade() { - if let Some(room) = session.room_list().get(matrix_room.room_id()) { - room.set_is_encrypted(true); - } + client.add_event_handler(move |_: SyncRoomEncryptionEvent, matrix_room: MatrixRoom| { + let session_weak = session_weak.clone(); + async move { + let ctx = glib::MainContext::default(); + ctx.spawn(async move { + if let Some(session) = session_weak.upgrade() { + if let Some(room) = session.room_list().get(matrix_room.room_id()) { + room.set_is_encrypted(true); } - }); - } - }) - .await; + } + }); + } + }); }); } } @@ -986,7 +984,7 @@ async fn create_client( passphrase: String, use_discovery: bool, ) -> Result { - let state_store = StateStore::builder() + let state_store = SledStateStore::builder() .path(path) .passphrase(passphrase) .migration_conflict_strategy(MigrationConflictStrategy::Drop) diff --git a/src/session/room/event/mod.rs b/src/session/room/event/mod.rs index 4da549fe..e199baf6 100644 --- a/src/session/room/event/mod.rs +++ b/src/session/room/event/mod.rs @@ -1,7 +1,7 @@ use gtk::{glib, prelude::*, subclass::prelude::*}; use log::warn; use matrix_sdk::{ - deserialized_responses::SyncRoomEvent, + deserialized_responses::SyncTimelineEvent, ruma::{MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedUserId}, }; @@ -17,8 +17,8 @@ pub use supported_event::SupportedEvent; pub use unsupported_event::UnsupportedEvent; #[derive(Clone, Debug, glib::Boxed)] -#[boxed_type(name = "BoxedSyncRoomEvent")] -pub struct BoxedSyncRoomEvent(SyncRoomEvent); +#[boxed_type(name = "BoxedSyncTimelineEvent")] +pub struct BoxedSyncTimelineEvent(SyncTimelineEvent); mod imp { use std::cell::RefCell; @@ -67,7 +67,7 @@ mod imp { pub struct Event { /// The SDK event containing encryption information and the serialized /// event as `Raw`. - pub pure_event: RefCell>, + pub pure_event: RefCell>, /// The room containing this `Event`. pub room: OnceCell>, @@ -90,7 +90,7 @@ mod imp { "pure-event", "Pure Event", "The pure Matrix event of this Event", - BoxedSyncRoomEvent::static_type(), + BoxedSyncTimelineEvent::static_type(), glib::ParamFlags::WRITABLE, ), glib::ParamSpecString::new( @@ -129,7 +129,7 @@ mod imp { ) { match pspec.name() { "pure-event" => { - let event = value.get::().unwrap(); + let event = value.get::().unwrap(); obj.set_pure_event(event.0); } "room" => { @@ -171,7 +171,7 @@ impl Event { /// Create an `Event` with the given pure SDK event and room. /// /// Constructs the proper subtype according to the event. - pub fn new(pure_event: SyncRoomEvent, room: &Room) -> Self { + pub fn new(pure_event: SyncTimelineEvent, room: &Room) -> Self { SupportedEvent::try_from_event(pure_event.clone(), room) .map(|event| event.upcast()) .unwrap_or_else(|error| { @@ -191,10 +191,10 @@ pub trait EventExt: 'static { fn room(&self) -> Room; /// The pure SDK event of this `Event`. - fn pure_event(&self) -> SyncRoomEvent; + fn pure_event(&self) -> SyncTimelineEvent; /// Set the pure SDK event of this `Event`. - fn set_pure_event(&self, pure_event: SyncRoomEvent); + fn set_pure_event(&self, pure_event: SyncTimelineEvent); /// The source JSON of this `Event`. fn original_source(&self) -> String; @@ -257,11 +257,11 @@ impl> EventExt for O { .unwrap() } - fn pure_event(&self) -> SyncRoomEvent { + fn pure_event(&self) -> SyncTimelineEvent { self.upcast_ref().imp().pure_event.borrow().clone().unwrap() } - fn set_pure_event(&self, pure_event: SyncRoomEvent) { + fn set_pure_event(&self, pure_event: SyncTimelineEvent) { let priv_ = self.upcast_ref().imp(); priv_.pure_event.replace(Some(pure_event)); diff --git a/src/session/room/event/supported_event.rs b/src/session/room/event/supported_event.rs index 160061fe..b3549b4f 100644 --- a/src/session/room/event/supported_event.rs +++ b/src/session/room/event/supported_event.rs @@ -1,7 +1,7 @@ use gtk::{glib, glib::clone, prelude::*, subclass::prelude::*}; use log::debug; use matrix_sdk::{ - deserialized_responses::SyncRoomEvent, + deserialized_responses::SyncTimelineEvent, media::MediaEventContent, ruma::{ events::{ @@ -10,8 +10,8 @@ use matrix_sdk::{ message::{MessageType, Relation}, redaction::SyncRoomRedactionEvent, }, - AnyMessageLikeEventContent, AnySyncMessageLikeEvent, AnySyncRoomEvent, - AnySyncStateEvent, SyncMessageLikeEvent, SyncStateEvent, + AnyMessageLikeEventContent, AnySyncMessageLikeEvent, AnySyncStateEvent, + AnySyncTimelineEvent, SyncMessageLikeEvent, SyncStateEvent, }, serde::Raw, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedTransactionId, OwnedUserId, @@ -20,7 +20,7 @@ use matrix_sdk::{ }; use serde_json::Error as JsonError; -use super::{BoxedSyncRoomEvent, Event, EventImpl}; +use super::{BoxedSyncTimelineEvent, Event, EventImpl}; use crate::{ prelude::*, session::room::{ @@ -32,8 +32,8 @@ use crate::{ }; #[derive(Clone, Debug, glib::Boxed)] -#[boxed_type(name = "BoxedAnySyncRoomEvent")] -pub struct BoxedAnySyncRoomEvent(AnySyncRoomEvent); +#[boxed_type(name = "BoxedAnySyncTimelineEvent")] +pub struct BoxedAnySyncTimelineEvent(AnySyncTimelineEvent); mod imp { use std::cell::RefCell; @@ -46,7 +46,7 @@ mod imp { #[derive(Debug, Default)] pub struct SupportedEvent { /// The deserialized Matrix event. - pub matrix_event: RefCell>, + pub matrix_event: RefCell>, /// Events that replace this one, in the order they arrive. pub replacing_events: RefCell>, pub reactions: ReactionList, @@ -69,7 +69,7 @@ mod imp { "matrix-event", "Matrix Event", "The deserialized Matrix event of this Event", - BoxedAnySyncRoomEvent::static_type(), + BoxedAnySyncTimelineEvent::static_type(), glib::ParamFlags::WRITABLE, ), glib::ParamSpecObject::new( @@ -94,7 +94,7 @@ mod imp { ) { match pspec.name() { "matrix-event" => { - let matrix_event = value.get::().unwrap(); + let matrix_event = value.get::().unwrap(); obj.set_matrix_event(matrix_event.0); } _ => unimplemented!(), @@ -179,9 +179,9 @@ impl SupportedEvent { /// room. /// /// Returns an error if the pure event fails to deserialize. - pub fn try_from_event(pure_event: SyncRoomEvent, room: &Room) -> Result { - let matrix_event = BoxedAnySyncRoomEvent(pure_event.event.deserialize()?); - let pure_event = BoxedSyncRoomEvent(pure_event); + pub fn try_from_event(pure_event: SyncTimelineEvent, room: &Room) -> Result { + let matrix_event = BoxedAnySyncTimelineEvent(pure_event.event.deserialize()?); + let pure_event = BoxedSyncTimelineEvent(pure_event); Ok(glib::Object::new(&[ ("pure-event", &pure_event), ("matrix-event", &matrix_event), @@ -191,8 +191,8 @@ impl SupportedEvent { } /// Set the deserialized Matrix event of this `SupportedEvent`. - fn set_matrix_event(&self, matrix_event: AnySyncRoomEvent) { - if let AnySyncRoomEvent::MessageLike(AnySyncMessageLikeEvent::RoomEncrypted( + fn set_matrix_event(&self, matrix_event: AnySyncTimelineEvent) { + if let AnySyncTimelineEvent::MessageLike(AnySyncMessageLikeEvent::RoomEncrypted( SyncMessageLikeEvent::Original(_), )) = matrix_event { @@ -206,7 +206,7 @@ impl SupportedEvent { } /// The deserialized Matrix event of this `SupportedEvent`. - pub fn matrix_event(&self) -> AnySyncRoomEvent { + pub fn matrix_event(&self) -> AnySyncTimelineEvent { self.imp().matrix_event.borrow().clone().unwrap() } @@ -226,7 +226,7 @@ impl SupportedEvent { if let Some(keys_handle) = priv_.keys_handle.take() { self.room().disconnect(keys_handle); } - let pure_event = SyncRoomEvent::from(decrypted); + let pure_event = SyncTimelineEvent::from(decrypted); let matrix_event = pure_event.event.deserialize().unwrap(); self.set_pure_event(pure_event); self.set_matrix_event(matrix_event); @@ -295,7 +295,7 @@ impl SupportedEvent { /// The ID of the event this `SupportedEvent` relates to, if any. pub fn related_event_id(&self) -> Option { match self.imp().matrix_event.borrow().as_ref()? { - AnySyncRoomEvent::MessageLike(ref message) => match message { + AnySyncTimelineEvent::MessageLike(ref message) => match message { AnySyncMessageLikeEvent::RoomRedaction(SyncRoomRedactionEvent::Original(event)) => { Some(event.redacts.clone()) } @@ -329,12 +329,12 @@ impl SupportedEvent { /// - `RoomMessage` with `Relation::Replacement` pub fn is_replacing_event(&self) -> bool { match self.imp().matrix_event.borrow().as_ref().unwrap() { - AnySyncRoomEvent::MessageLike(AnySyncMessageLikeEvent::RoomMessage( + AnySyncTimelineEvent::MessageLike(AnySyncMessageLikeEvent::RoomMessage( SyncMessageLikeEvent::Original(message), )) => { matches!(message.content.relates_to, Some(Relation::Replacement(_))) } - AnySyncRoomEvent::MessageLike(AnySyncMessageLikeEvent::RoomRedaction(_)) => true, + AnySyncTimelineEvent::MessageLike(AnySyncMessageLikeEvent::RoomRedaction(_)) => true, _ => false, } } @@ -404,7 +404,7 @@ impl SupportedEvent { .filter(|event| { matches!( event.matrix_event(), - AnySyncRoomEvent::MessageLike(AnySyncMessageLikeEvent::RoomRedaction(_)) + AnySyncTimelineEvent::MessageLike(AnySyncMessageLikeEvent::RoomRedaction(_)) ) }) .is_some() @@ -433,7 +433,7 @@ impl SupportedEvent { /// The content of this `SupportedEvent`, if this is a message-like event. pub fn original_content(&self) -> Option { match self.matrix_event() { - AnySyncRoomEvent::MessageLike(message) => message.original_content(), + AnySyncTimelineEvent::MessageLike(message) => message.original_content(), _ => None, } } @@ -465,7 +465,7 @@ impl SupportedEvent { /// an incompatible event. pub async fn get_media_content(&self) -> Result<(String, String, Vec), matrix_sdk::Error> { if let AnyMessageLikeEventContent::RoomMessage(content) = self.original_content().unwrap() { - let client = self.room().session().client(); + let media = self.room().session().client().media(); match content.msgtype { MessageType::File(content) => { let uid = media_type_uid(content.source()); @@ -485,7 +485,7 @@ impl SupportedEvent { None, ) }); - let handle = spawn_tokio!(async move { client.get_file(content, true).await }); + let handle = spawn_tokio!(async move { media.get_file(content, true).await }); let data = handle.await.unwrap()?.unwrap(); return Ok((uid, filename, data)); } @@ -502,7 +502,7 @@ impl SupportedEvent { } else { content.body.clone() }; - let handle = spawn_tokio!(async move { client.get_file(content, true).await }); + let handle = spawn_tokio!(async move { media.get_file(content, true).await }); let data = handle.await.unwrap()?.unwrap(); return Ok((uid, filename, data)); } @@ -519,7 +519,7 @@ impl SupportedEvent { } else { content.body.clone() }; - let handle = spawn_tokio!(async move { client.get_file(content, true).await }); + let handle = spawn_tokio!(async move { media.get_file(content, true).await }); let data = handle.await.unwrap()?.unwrap(); return Ok((uid, filename, data)); } @@ -536,7 +536,7 @@ impl SupportedEvent { } else { content.body.clone() }; - let handle = spawn_tokio!(async move { client.get_file(content, true).await }); + let handle = spawn_tokio!(async move { media.get_file(content, true).await }); let data = handle.await.unwrap()?.unwrap(); return Ok((uid, filename, data)); } @@ -590,7 +590,7 @@ impl SupportedEvent { let priv_ = self.imp(); if self.related_event_id().is_some() { - if let Some(AnySyncRoomEvent::MessageLike(AnySyncMessageLikeEvent::RoomMessage( + if let Some(AnySyncTimelineEvent::MessageLike(AnySyncMessageLikeEvent::RoomMessage( SyncMessageLikeEvent::Original(message), ))) = priv_.matrix_event.borrow().as_ref() { @@ -603,13 +603,13 @@ impl SupportedEvent { // List of all events to be shown. match priv_.matrix_event.borrow().as_ref() { - Some(AnySyncRoomEvent::MessageLike(message)) => !matches!( + Some(AnySyncTimelineEvent::MessageLike(message)) => !matches!( message, AnySyncMessageLikeEvent::RoomMessage(SyncMessageLikeEvent::Original(_)) | AnySyncMessageLikeEvent::RoomEncrypted(SyncMessageLikeEvent::Original(_)) | AnySyncMessageLikeEvent::Sticker(SyncMessageLikeEvent::Original(_)) ), - Some(AnySyncRoomEvent::State(state)) => !matches!( + Some(AnySyncTimelineEvent::State(state)) => !matches!( state, AnySyncStateEvent::RoomCreate(SyncStateEvent::Original(_)) | AnySyncStateEvent::RoomMember(SyncStateEvent::Original(_)) diff --git a/src/session/room/event/unsupported_event.rs b/src/session/room/event/unsupported_event.rs index 1a6a616e..90a12596 100644 --- a/src/session/room/event/unsupported_event.rs +++ b/src/session/room/event/unsupported_event.rs @@ -1,7 +1,7 @@ use gtk::{glib, prelude::*, subclass::prelude::*}; -use matrix_sdk::{deserialized_responses::SyncRoomEvent, ruma::events::RoomEventType}; +use matrix_sdk::{deserialized_responses::SyncTimelineEvent, ruma::events::RoomEventType}; -use super::{BoxedSyncRoomEvent, Event, EventImpl}; +use super::{BoxedSyncTimelineEvent, Event, EventImpl}; use crate::session::room::{ timeline::{TimelineItem, TimelineItemImpl}, Room, @@ -34,8 +34,8 @@ glib::wrapper! { impl UnsupportedEvent { /// Construct an `UnsupportedEvent` from the given pure event and room. - pub fn new(pure_event: SyncRoomEvent, room: &Room) -> Self { - let pure_event = BoxedSyncRoomEvent(pure_event); + pub fn new(pure_event: SyncTimelineEvent, room: &Room) -> Self { + let pure_event = BoxedSyncTimelineEvent(pure_event); glib::Object::new(&[("pure-event", &pure_event), ("room", room)]) .expect("Failed to create UnsupportedEvent") } diff --git a/src/session/room/member.rs b/src/session/room/member.rs index cfabd09d..8040ae54 100644 --- a/src/session/room/member.rs +++ b/src/session/room/member.rs @@ -1,5 +1,6 @@ use gtk::{glib, prelude::*, subclass::prelude::*}; use matrix_sdk::{ + room::RoomMember, ruma::{ events::{ room::member::{MembershipState, RoomMemberEventContent}, @@ -7,7 +8,6 @@ use matrix_sdk::{ }, OwnedMxcUri, UserId, }, - RoomMember, }; use crate::{ diff --git a/src/session/room/member_list.rs b/src/session/room/member_list.rs index 52d2b20f..060e7201 100644 --- a/src/session/room/member_list.rs +++ b/src/session/room/member_list.rs @@ -105,7 +105,7 @@ impl MemberList { /// /// If some of the values do not correspond to existing members, new members /// are created. - pub fn update_from_room_members(&self, new_members: &[matrix_sdk::RoomMember]) { + pub fn update_from_room_members(&self, new_members: &[matrix_sdk::room::RoomMember]) { let mut members = self.imp().members.borrow_mut(); let prev_len = members.len(); for member in new_members { diff --git a/src/session/room/mod.rs b/src/session/room/mod.rs index 1bd7e9e5..eb424c67 100644 --- a/src/session/room/mod.rs +++ b/src/session/room/mod.rs @@ -17,7 +17,7 @@ use gtk::{glib, glib::clone, prelude::*, subclass::prelude::*}; use log::{debug, error, info, warn}; use matrix_sdk::{ attachment::AttachmentConfig, - deserialized_responses::{JoinedRoom, LeftRoom, SyncRoomEvent}, + deserialized_responses::{JoinedRoom, LeftRoom, SyncTimelineEvent}, room::Room as MatrixRoom, ruma::{ api::client::sync::sync_events::v3::InvitedRoom, @@ -34,14 +34,14 @@ use matrix_sdk::{ room_key::ToDeviceRoomKeyEventContent, tag::{TagInfo, TagName}, AnyRoomAccountDataEvent, AnyStrippedStateEvent, AnySyncMessageLikeEvent, - AnySyncRoomEvent, AnySyncStateEvent, EventContent, MessageLikeEventType, + AnySyncStateEvent, AnySyncTimelineEvent, EventContent, MessageLikeEventType, MessageLikeUnsigned, OriginalSyncMessageLikeEvent, StateEventType, SyncMessageLikeEvent, SyncStateEvent, ToDeviceEvent, }, serde::Raw, EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedUserId, RoomId, }, - DisplayName, Result as MatrixResult, RoomMember, + DisplayName, Result as MatrixResult, }; use ruma::events::SyncEphemeralRoomEvent; @@ -559,7 +559,9 @@ impl Room { } room.accept_invitation().await?; } - RoomType::Left => room.reject_invitation().await?, + RoomType::Left => { + room.reject_invitation().await?; + } RoomType::Outdated => unimplemented!(), RoomType::Space => unimplemented!(), RoomType::Direct => { @@ -607,7 +609,9 @@ impl Room { room.remove_tag(TagName::Favorite).await?; } } - RoomType::Left => room.leave().await?, + RoomType::Left => { + room.leave().await?; + } RoomType::Outdated => unimplemented!(), RoomType::Space => unimplemented!(), RoomType::Direct => { @@ -782,8 +786,7 @@ impl Room { // Listen to changes in the read receipts. let room_weak = glib::SendWeakRef::from(obj.downgrade()); - obj.session().client().add_room_event_handler( - obj.room_id(), + obj.matrix_room().add_event_handler( move |event: SyncEphemeralRoomEvent| { let room_weak = room_weak.clone(); async move { @@ -797,8 +800,7 @@ impl Room { }); } }, - ) - .await; + ); }) ); } @@ -1057,8 +1059,7 @@ impl Room { let name_content = RoomNameEventContent::new(Some(room_name)); - let handle = - spawn_tokio!(async move { joined_room.send_state_event(name_content, "").await }); + let handle = spawn_tokio!(async move { joined_room.send_state_event(name_content).await }); spawn!( glib::PRIORITY_DEFAULT_IDLE, @@ -1097,7 +1098,7 @@ impl Room { let handle = spawn_tokio!(async move { joined_room - .send_state_event(RoomTopicEventContent::new(topic), "") + .send_state_event(RoomTopicEventContent::new(topic)) .await }); @@ -1157,7 +1158,7 @@ impl Room { /// Update the room state based on the new sync response /// FIXME: We should use the sdk's event handler to get updates - pub fn update_for_events(&self, batch: Vec) { + pub fn update_for_events(&self, batch: Vec) { // FIXME: notify only when the count has changed self.notify_notification_count(); @@ -1167,7 +1168,7 @@ impl Room { .collect(); for event in events.iter() { - if let AnySyncRoomEvent::State(state_event) = event { + if let AnySyncTimelineEvent::State(state_event) = event { match state_event { AnySyncStateEvent::RoomMember(SyncStateEvent::Original(event)) => { self.members().update_member_for_member_event(event) @@ -1237,7 +1238,7 @@ impl Room { match handle.await.unwrap() { Ok(members) => { // Add all members needed to display room events. - let members: Vec = members.into_iter().filter(|member| { + let members: Vec<_> = members.into_iter().filter(|member| { &MembershipState::Leave != member.membership() }).collect(); obj.members().update_from_room_members(&members); @@ -1301,7 +1302,7 @@ impl Room { unsigned: MessageLikeUnsigned::default(), }; - let raw_event: Raw = Raw::new(&matrix_event).unwrap().cast(); + let raw_event: Raw = Raw::new(&matrix_event).unwrap().cast(); let event = SupportedEvent::try_from_event(raw_event.into(), self).unwrap(); self.imp() .timeline @@ -1352,7 +1353,7 @@ impl Room { }; if let MatrixRoom::Joined(matrix_room) = self.matrix_room() { - let raw_event: Raw = Raw::new(&event).unwrap().cast(); + let raw_event: Raw = Raw::new(&event).unwrap().cast(); let event = SupportedEvent::try_from_event(raw_event.into(), self).unwrap(); self.imp() .timeline @@ -1416,7 +1417,7 @@ impl Room { if let MatrixRoom::Invited(matrix_room) = matrix_room { let handle = spawn_tokio!(async move { matrix_room.accept_invitation().await }); match handle.await.unwrap() { - Ok(result) => Ok(result), + Ok(_) => Ok(()), Err(error) => { error!("Accepting invitation failed: {}", error); @@ -1445,7 +1446,7 @@ impl Room { if let MatrixRoom::Invited(matrix_room) = matrix_room { let handle = spawn_tokio!(async move { matrix_room.reject_invitation().await }); match handle.await.unwrap() { - Ok(result) => Ok(result), + Ok(_) => Ok(()), Err(error) => { error!("Rejecting invitation failed: {}", error); @@ -1571,11 +1572,10 @@ impl Room { let body = body.to_string(); spawn_tokio!(async move { let config = AttachmentConfig::default(); - let mut cursor = std::io::Cursor::new(&bytes); matrix_room // TODO This should be added to pending messages instead of // sending it directly. - .send_attachment(&body, &mime, &mut cursor, config) + .send_attachment(&body, &mime, &bytes, config) .await .unwrap(); }); @@ -1660,7 +1660,7 @@ impl Room { /// events. /// /// The events must be in reverse chronological order. - pub fn update_latest_unread<'a>(&self, events: impl Iterator) { + pub fn update_latest_unread<'a>(&self, events: impl Iterator) { let mut latest_unread = self.latest_unread(); for event in events { @@ -1709,21 +1709,19 @@ impl Room { glib::PRIORITY_DEFAULT_IDLE, clone!(@weak self as obj => async move { let obj_weak = glib::SendWeakRef::from(obj.downgrade()); - obj.session().client().add_room_event_handler( - obj.room_id(), - move |_: ToDeviceEvent| { - let obj_weak = obj_weak.clone(); - async move { - let ctx = glib::MainContext::default(); - ctx.spawn(async move { - if let Some(room) = obj_weak.upgrade() { - room.emit_by_name::<()>("new-encryption-keys", &[]); - } - }); - } - }, - ) - .await; + obj.matrix_room().add_event_handler( + move |_: ToDeviceEvent| { + let obj_weak = obj_weak.clone(); + async move { + let ctx = glib::MainContext::default(); + ctx.spawn(async move { + if let Some(room) = obj_weak.upgrade() { + room.emit_by_name::<()>("new-encryption-keys", &[]); + } + }); + } + }, + ); }) ); } @@ -1753,9 +1751,9 @@ impl Room { /// show in the timeline. /// /// [MSC2654]: https://github.com/matrix-org/matrix-spec-proposals/pull/2654 -fn count_as_unread(event: &AnySyncRoomEvent) -> bool { +fn count_as_unread(event: &AnySyncTimelineEvent) -> bool { match event { - AnySyncRoomEvent::MessageLike(message_event) => match message_event { + AnySyncTimelineEvent::MessageLike(message_event) => match message_event { AnySyncMessageLikeEvent::RoomMessage(SyncMessageLikeEvent::Original(message)) => { if matches!(message.content.msgtype, MessageType::Notice(_)) { return false; @@ -1770,9 +1768,9 @@ fn count_as_unread(event: &AnySyncRoomEvent) -> bool { AnySyncMessageLikeEvent::Sticker(SyncMessageLikeEvent::Original(_)) => true, _ => false, }, - AnySyncRoomEvent::State(AnySyncStateEvent::RoomTombstone(SyncStateEvent::Original(_))) => { - true - } + AnySyncTimelineEvent::State(AnySyncStateEvent::RoomTombstone( + SyncStateEvent::Original(_), + )) => true, _ => false, } } diff --git a/src/session/room/timeline/mod.rs b/src/session/room/timeline/mod.rs index 32018a1f..ee3e6941 100644 --- a/src/session/room/timeline/mod.rs +++ b/src/session/room/timeline/mod.rs @@ -13,7 +13,7 @@ use futures::{lock::Mutex, pin_mut, Stream, StreamExt}; use gtk::{gio, glib, prelude::*, subclass::prelude::*}; use log::{error, warn}; use matrix_sdk::{ - deserialized_responses::SyncRoomEvent, + deserialized_responses::SyncTimelineEvent, ruma::{EventId, OwnedEventId, OwnedTransactionId, TransactionId}, Error as MatrixError, }; @@ -45,7 +45,7 @@ impl Default for TimelineState { const MAX_BATCH_SIZE: usize = 20; type BackwardStream = - Pin>> + 'static + Send>>; + Pin>> + 'static + Send>>; mod imp { use std::cell::{Cell, RefCell}; @@ -851,7 +851,7 @@ impl Timeline { async fn handle_forward_stream( timeline: glib::SendWeakRef, - stream: impl Stream, + stream: impl Stream, ) { let stream = stream.ready_chunks(MAX_BATCH_SIZE); pin_mut!(stream); diff --git a/src/session/room_creation/mod.rs b/src/session/room_creation/mod.rs index e7fb83d7..dc6e768a 100644 --- a/src/session/room_creation/mod.rs +++ b/src/session/room_creation/mod.rs @@ -13,7 +13,7 @@ use matrix_sdk::{ }, assign, }, - HttpError, RumaApiError, + Error, HttpError, RumaApiError, }; use crate::{ @@ -230,7 +230,7 @@ impl RoomCreation { match handle.await.unwrap() { Ok(response) => { if let Some(session) = obj.session() { - let room = session.room_list().get_wait(response.room_id).await; + let room = session.room_list().get_wait(response.room_id()).await; session.select_room(room); } obj.close(); @@ -247,7 +247,7 @@ impl RoomCreation { } /// Display the error that occurred during creation - fn handle_error(&self, error: HttpError) { + fn handle_error(&self, error: Error) { let priv_ = self.imp(); priv_.create_button.set_loading(false); @@ -255,9 +255,9 @@ impl RoomCreation { priv_.cancel_button.set_sensitive(true); // Treat the room address already taken error special - if let HttpError::Api(FromHttpResponseError::Server(ServerError::Known( + if let Error::Http(HttpError::Api(FromHttpResponseError::Server(ServerError::Known( RumaApiError::ClientApi(ref client_error), - ))) = error + )))) = error { if client_error.kind == RumaClientErrorKind::RoomInUse { priv_.room_address.add_css_class("error"); diff --git a/src/session/room_list.rs b/src/session/room_list.rs index 8bb3341b..b6cc065c 100644 --- a/src/session/room_list.rs +++ b/src/session/room_list.rs @@ -155,12 +155,13 @@ impl RoomList { } /// Waits till the Room becomes available - pub async fn get_wait(&self, room_id: OwnedRoomId) -> Option { - if let Some(room) = self.get(&room_id) { + pub async fn get_wait(&self, room_id: &RoomId) -> Option { + if let Some(room) = self.get(room_id) { Some(room) } else { let (sender, receiver) = futures::channel::oneshot::channel(); + let room_id = room_id.to_owned(); let sender = Cell::new(Some(sender)); // FIXME: add a timeout let handler_id = self.connect_items_changed(move |obj, _, _, _| { @@ -316,7 +317,7 @@ impl RoomList { glib::PRIORITY_DEFAULT_IDLE, clone!(@weak self as obj => async move { match handle.await.unwrap() { - Ok(response) => obj.pending_rooms_replace_or_remove(&identifier, response.room_id.as_ref()), + Ok(response) => obj.pending_rooms_replace_or_remove(&identifier, response.room_id()), Err(error) => { obj.pending_rooms_remove(&identifier); error!("Joining room {} failed: {}", identifier, error); diff --git a/src/session/user.rs b/src/session/user.rs index b6b41906..5c6db51f 100644 --- a/src/session/user.rs +++ b/src/session/user.rs @@ -199,7 +199,7 @@ impl User { fn init_is_verified(&self) { spawn!(clone!(@weak self as obj => async move { - let is_verified = obj.crypto_identity().await.map_or(false, |i| i.verified()); + let is_verified = obj.crypto_identity().await.map_or(false, |i| i.is_verified()); if is_verified == obj.is_verified() { return; diff --git a/src/session/verification/verification_list.rs b/src/session/verification/verification_list.rs index 542856ab..4d601880 100644 --- a/src/session/verification/verification_list.rs +++ b/src/session/verification/verification_list.rs @@ -3,8 +3,8 @@ use log::{debug, warn}; use matrix_sdk::ruma::{ api::client::sync::sync_events::v3::ToDevice, events::{ - room::message::MessageType, AnySyncMessageLikeEvent, AnySyncRoomEvent, AnyToDeviceEvent, - SyncMessageLikeEvent, + room::message::MessageType, AnySyncMessageLikeEvent, AnySyncTimelineEvent, + AnyToDeviceEvent, SyncMessageLikeEvent, }, MilliSecondsSinceUnixEpoch, OwnedUserId, UserId, }; @@ -204,10 +204,10 @@ impl VerificationList { pub fn handle_response_room<'a>( &self, room: &Room, - events: impl Iterator, + events: impl Iterator, ) { for message_event in events.filter_map(|event| { - if let AnySyncRoomEvent::MessageLike(message_event) = event { + if let AnySyncTimelineEvent::MessageLike(message_event) = event { Some(message_event) } else { None