summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2025-06-01 14:09:43 +0100
committerLibravatar cel 🌸 <cel@bunny.garden>2025-06-01 14:09:43 +0100
commit0841bc1c64926de1d1a658ea1498f22e43ac6994 (patch)
tree4f1624a9eaac389528383ae139cc7679e8178f0b
parent39e6a0da29bd7129c572d56590bdb7acd6a580b9 (diff)
downloadmacaw-web-0841bc1c64926de1d1a658ea1498f22e43ac6994.tar.gz
macaw-web-0841bc1c64926de1d1a658ea1498f22e43ac6994.tar.bz2
macaw-web-0841bc1c64926de1d1a658ea1498f22e43ac6994.zip
fix: update JID types
-rw-r--r--Cargo.lock157
-rw-r--r--src/lib.rs109
2 files changed, 123 insertions, 143 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 275d293..3ab606d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -170,9 +170,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "av1-grain"
-version = "0.2.3"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf"
+checksum = "4f3efb2ca85bc610acfa917b5aaa36f3fcbebed5b3182d7f877b02531c4b80c8"
dependencies = [
"anyhow",
"arrayvec",
@@ -226,9 +226,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.9.0"
+version = "2.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
+checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
[[package]]
name = "bitstream-io"
@@ -283,9 +283,9 @@ checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3"
[[package]]
name = "cc"
-version = "1.2.22"
+version = "1.2.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32db95edf998450acc7881c932f94cd9b05c87b4b2599e8bab064753da4acfd1"
+checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951"
dependencies = [
"jobserver",
"libc",
@@ -664,9 +664,9 @@ checksum = "a1731451909bde27714eacba19c2566362a7f35224f52b153d3f42cf60f72472"
[[package]]
name = "errno"
-version = "0.3.11"
+version = "0.3.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e"
+checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18"
dependencies = [
"libc",
"windows-sys 0.59.0",
@@ -722,9 +722,9 @@ checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
[[package]]
name = "fancy_constructor"
-version = "2.0.0"
+version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fac0fd7f4636276b4bd7b3148d0ba2c1c3fbede2b5214e47e7fedb70b02cde44"
+checksum = "28a27643a5d05f3a22f5afd6e0d0e6e354f92d37907006f97b84b9cb79082198"
dependencies = [
"macroific",
"proc-macro2",
@@ -1055,9 +1055,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "hermit-abi"
-version = "0.3.9"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08"
[[package]]
name = "hex"
@@ -1181,9 +1181,9 @@ checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3"
[[package]]
name = "icu_properties"
-version = "2.0.0"
+version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2549ca8c7241c82f59c80ba2a6f415d931c5b58d24fb8412caa1a1f02c49139a"
+checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b"
dependencies = [
"displaydoc",
"icu_collections",
@@ -1197,9 +1197,9 @@ dependencies = [
[[package]]
name = "icu_properties_data"
-version = "2.0.0"
+version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8197e866e47b68f8f7d95249e172903bec06004b18b2937f1095d40a0c57de04"
+checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632"
[[package]]
name = "icu_provider"
@@ -1302,9 +1302,9 @@ dependencies = [
[[package]]
name = "indexed_db_futures"
-version = "0.6.3"
+version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fc9c8bc34f6d3486832b25d036b9a3dfea8d214e9ae1cf25c2a150963a5b8dd"
+checksum = "69ff41758cbd104e91033bb53bc449bec7eea65652960c81eddf3fc146ecea19"
dependencies = [
"accessory",
"cfg-if",
@@ -1649,9 +1649,9 @@ checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
[[package]]
name = "lock_api"
-version = "0.4.12"
+version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765"
dependencies = [
"autocfg",
"scopeguard",
@@ -1685,26 +1685,17 @@ dependencies = [
name = "luz"
version = "0.1.0"
dependencies = [
- "async-recursion",
- "async-trait",
- "futures",
"getrandom 0.2.16",
"jid",
"js-sys",
- "lazy_static",
"peanuts",
- "pin-project",
- "pin-project-lite",
"rsasl",
"stanza",
- "take_mut",
"thiserror 2.0.12",
"tokio",
"tokio-native-tls",
- "tokio_with_wasm",
"tracing",
"trust-dns-resolver",
- "try_map",
"uuid",
"wasm-bindgen",
"wasm-bindgen-futures",
@@ -1845,13 +1836,13 @@ dependencies = [
[[package]]
name = "mio"
-version = "1.0.3"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
+checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
dependencies = [
"libc",
"wasi 0.11.0+wasi-snapshot-preview1",
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -1951,9 +1942,9 @@ 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",
"libc",
@@ -1986,11 +1977,11 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
[[package]]
name = "openssl"
-version = "0.10.72"
+version = "0.10.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da"
+checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.1",
"cfg-if",
"foreign-types",
"libc",
@@ -2018,9 +2009,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
[[package]]
name = "openssl-sys"
-version = "0.9.108"
+version = "0.9.109"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e145e1651e858e820e4860f7b9c5e169bc1d8ce1c86043be79fa7b7634821847"
+checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571"
dependencies = [
"cc",
"libc",
@@ -2042,9 +2033,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
[[package]]
name = "parking_lot"
-version = "0.12.3"
+version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
+checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13"
dependencies = [
"lock_api",
"parking_lot_core",
@@ -2052,9 +2043,9 @@ dependencies = [
[[package]]
name = "parking_lot_core"
-version = "0.9.10"
+version = "0.9.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
+checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5"
dependencies = [
"cfg-if",
"libc",
@@ -2087,7 +2078,7 @@ dependencies = [
[[package]]
name = "peanuts"
version = "0.1.0"
-source = "git+https://bunny.garden/peanuts#94afe363ea88a6fd036d1681542d650e7cd3c2e7"
+source = "git+https://bunny.garden/peanuts#e1f4fbb65724fdfbce2068d3ee334eb4f60af37a"
dependencies = [
"async-recursion",
"circular",
@@ -2180,9 +2171,9 @@ dependencies = [
[[package]]
name = "prettyplease"
-version = "0.2.32"
+version = "0.2.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6"
+checksum = "9dee91521343f4c5c6a63edd65e54f31f5c92fe8978c40a4282f8372194c6a7d"
dependencies = [
"proc-macro2",
"syn 2.0.101",
@@ -2472,7 +2463,7 @@ version = "0.5.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.1",
]
[[package]]
@@ -2506,9 +2497,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "resolv-conf"
-version = "0.7.3"
+version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc7c8f7f733062b66dc1c63f9db168ac0b97a9210e247fa90fdc9ad08f51b302"
+checksum = "95325155c684b1c89f7765e30bc1c42e4a6da51ca513615660cb8a62ef9a88e3"
[[package]]
name = "rgb"
@@ -2554,7 +2545,7 @@ name = "rusqlite"
version = "0.34.0"
source = "git+https://github.com/Spxg/rusqlite.git?branch=wasm-demo#4820de79e45d0604e0596641cbb5dd86aa53f0ed"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.1",
"chrono",
"fallible-iterator",
"fallible-streaming-iterator",
@@ -2592,7 +2583,7 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.1",
"errno",
"libc",
"linux-raw-sys",
@@ -2601,9 +2592,9 @@ dependencies = [
[[package]]
name = "rustversion"
-version = "1.0.20"
+version = "1.0.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
+checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d"
[[package]]
name = "ryu"
@@ -2652,7 +2643,7 @@ version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.1",
"core-foundation",
"core-foundation-sys",
"libc",
@@ -2889,9 +2880,9 @@ checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9"
[[package]]
name = "socket2"
-version = "0.5.9"
+version = "0.5.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef"
+checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
dependencies = [
"libc",
"windows-sys 0.52.0",
@@ -2899,9 +2890,9 @@ dependencies = [
[[package]]
name = "sqlite-wasm-rs"
-version = "0.3.4"
+version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a20e0d972353ff053376a9c5f5804d2d9a12839831e3487de8947b29df2fe04c"
+checksum = "c0c6fdb636283dad1283b20bc62157ac68a7124fde269723467689c4fd6d356c"
dependencies = [
"fragile",
"indexed_db_futures",
@@ -3043,9 +3034,9 @@ dependencies = [
[[package]]
name = "tachys"
-version = "0.2.2"
+version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac1d6bcb12a286928f53c269412d3e515d37583cb90d8daf4bc1b35d65104883"
+checksum = "51a9a5d6436e532fd27b49bcca005a038bf510fc369687de830121a74811ccf4"
dependencies = [
"any_spawner",
"async-trait",
@@ -3077,12 +3068,6 @@ dependencies = [
]
[[package]]
-name = "take_mut"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60"
-
-[[package]]
name = "target-lexicon"
version = "0.12.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3090,9 +3075,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
[[package]]
name = "tempfile"
-version = "3.19.1"
+version = "3.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf"
+checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
dependencies = [
"fastrand",
"getrandom 0.3.3",
@@ -3198,9 +3183,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
-version = "1.45.0"
+version = "1.45.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165"
+checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779"
dependencies = [
"backtrace",
"bytes",
@@ -3247,9 +3232,9 @@ dependencies = [
[[package]]
name = "tokio_with_wasm_proc"
-version = "0.8.2"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee80eb7e23abaa636caa9afe6042c6d8a8c0686165b8165f4fbf2988f0dd347f"
+checksum = "499ed9d797c376545920fa64c39c3efb34217ba4db826102db6c3912555291c9"
dependencies = [
"quote",
"syn 2.0.101",
@@ -3395,12 +3380,6 @@ dependencies = [
]
[[package]]
-name = "try_map"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb1626d07cb5c1bb2cf17d94c0be4852e8a7c02b041acec9a8c5bdda99f9d580"
-
-[[package]]
name = "typed-builder"
version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3490,9 +3469,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
[[package]]
name = "uuid"
-version = "1.16.0"
+version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9"
+checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d"
dependencies = [
"getrandom 0.3.3",
"js-sys",
@@ -3649,9 +3628,9 @@ dependencies = [
[[package]]
name = "weezl"
-version = "0.1.8"
+version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082"
+checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3"
[[package]]
name = "widestring"
@@ -3670,9 +3649,9 @@ dependencies = [
[[package]]
name = "windows-core"
-version = "0.61.0"
+version = "0.61.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980"
+checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
dependencies = [
"windows-implement",
"windows-interface",
@@ -3711,18 +3690,18 @@ checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
[[package]]
name = "windows-result"
-version = "0.3.2"
+version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252"
+checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
dependencies = [
"windows-link",
]
[[package]]
name = "windows-strings"
-version = "0.4.0"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97"
+checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
dependencies = [
"windows-link",
]
@@ -3909,7 +3888,7 @@ version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.1",
]
[[package]]
diff --git a/src/lib.rs b/src/lib.rs
index 28e973b..26ea17b 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -18,7 +18,7 @@ use filamento::{
};
use futures::stream::StreamExt;
use indexmap::IndexMap;
-use jid::JID;
+use jid::{JID, BareJID};
use leptos::{
ev::{Event, KeyboardEvent, MouseEvent, SubmitEvent},
html::{self, Div, Input, Pre, Textarea},
@@ -47,7 +47,7 @@ pub enum AppState {
pub struct Client {
client: filamento::Client<Files>,
resource: ArcRwSignal<Option<String>>,
- jid: Arc<JID>,
+ jid: Arc<BareJID>,
file_store: Files,
}
@@ -229,7 +229,7 @@ fn LoginPage(
let client = Client {
client,
resource: resource.clone(),
- jid: Arc::new(jid),
+ jid: Arc::new(jid.to_bare()),
file_store: files,
};
@@ -311,8 +311,8 @@ fn LoginPage(
}
pub struct MessageSubscriptions {
- all: HashMap<Uuid, mpsc::Sender<(JID, MacawMessage)>>,
- subset: HashMap<JID, HashMap<Uuid, mpsc::Sender<MacawMessage>>>,
+ all: HashMap<Uuid, mpsc::Sender<(BareJID, MacawMessage)>>,
+ subset: HashMap<BareJID, HashMap<Uuid, mpsc::Sender<MacawMessage>>>,
}
impl MessageSubscriptions {
@@ -323,7 +323,7 @@ impl MessageSubscriptions {
}
}
- pub async fn broadcast(&mut self, to: JID, message: MacawMessage) {
+ pub async fn broadcast(&mut self, to: BareJID, message: MacawMessage) {
// subscriptions to all
let mut removals = Vec::new();
for (id, sender) in &self.all {
@@ -358,14 +358,14 @@ impl MessageSubscriptions {
}
}
- pub fn subscribe_all(&mut self) -> (Uuid, Receiver<(JID, MacawMessage)>) {
+ pub fn subscribe_all(&mut self) -> (Uuid, Receiver<(BareJID, MacawMessage)>) {
let (send, recv) = mpsc::channel(10);
let id = Uuid::new_v4();
self.all.insert(id, send);
(id, recv)
}
- pub fn subscribe_chat(&mut self, chat: JID) -> (Uuid, Receiver<MacawMessage>) {
+ pub fn subscribe_chat(&mut self, chat: BareJID) -> (Uuid, Receiver<MacawMessage>) {
let (send, recv) = mpsc::channel(10);
let id = Uuid::new_v4();
if let Some(chat_subscribers) = self.subset.get_mut(&chat) {
@@ -381,7 +381,7 @@ impl MessageSubscriptions {
self.all.remove(&sub_id);
}
- pub fn unsubscribe_chat(&mut self, sub_id: Uuid, chat: JID) {
+ pub fn unsubscribe_chat(&mut self, sub_id: Uuid, chat: BareJID) {
if let Some(chat_subs) = self.subset.get_mut(&chat) {
chat_subs.remove(&sub_id);
}
@@ -390,8 +390,8 @@ impl MessageSubscriptions {
#[derive(Store, Clone)]
pub struct Roster {
- #[store(key: JID = |(jid, _)| jid.clone())]
- contacts: HashMap<JID, MacawContact>,
+ #[store(key: BareJID = |(jid, _)| jid.clone())]
+ contacts: HashMap<BareJID, MacawContact>,
}
impl Roster {
@@ -410,9 +410,9 @@ impl Roster {
#[derive(Store, Default)]
pub struct OpenChatsPanel {
// jid must be a chat in the chats map
- chat_view: Option<JID>,
- #[store(key: JID = |(jid, _)| jid.clone())]
- chats: IndexMap<JID, MacawChat>,
+ chat_view: Option<BareJID>,
+ #[store(key: BareJID = |(jid, _)| jid.clone())]
+ chats: IndexMap<BareJID, MacawChat>,
}
pub fn open_chat(open_chats: Store<OpenChatsPanel>, chat: MacawChat) {
@@ -487,8 +487,8 @@ impl OpenChatsPanel {
#[derive(Store)]
pub struct UserPresences {
- #[store(key: JID = |(jid, _)| jid.clone())]
- user_presences: HashMap<JID, ArcRwSignal<Presences>>,
+ #[store(key: BareJID = |(jid, _)| jid.clone())]
+ user_presences: HashMap<BareJID, ArcRwSignal<Presences>>,
}
impl UserPresences {
@@ -499,7 +499,7 @@ impl UserPresences {
}
// TODO: should be a bare jid
- pub fn get_user_presences(&mut self, user: &JID) -> ArcRwSignal<Presences> {
+ pub fn get_user_presences(&mut self, user: &BareJID) -> ArcRwSignal<Presences> {
if let Some(presences) = self.user_presences.get(user) {
presences.clone()
} else {
@@ -628,9 +628,9 @@ fn Macaw(
let messages_store: StateStore<Uuid, ArcStore<Message>> = StateStore::new();
provide_context(messages_store);
- let chats_store: StateStore<JID, ArcStore<Chat>> = StateStore::new();
+ let chats_store: StateStore<BareJID, ArcStore<Chat>> = StateStore::new();
provide_context(chats_store);
- let users_store: StateStore<JID, ArcStore<User>> = StateStore::new();
+ let users_store: StateStore<BareJID, ArcStore<User>> = StateStore::new();
provide_context(users_store);
let open_chats = Store::new(OpenChatsPanel::default());
@@ -651,7 +651,7 @@ fn Macaw(
provide_context(client_user);
// TODO: timestamp incoming/outgoing subscription requests
- let (subscription_requests, set_subscription_requests)= signal(HashSet::<JID>::new());
+ let (subscription_requests, set_subscription_requests)= signal(HashSet::<BareJID>::new());
provide_context(subscription_requests);
provide_context(set_subscription_requests);
@@ -693,15 +693,15 @@ fn Macaw(
});
}
UpdateMessage::Presence { from, presence } => {
- let bare_jid = from.as_bare();
+ let bare_jid = from.to_bare();
if let Some(presences) = user_presences.read().user_presences.get(&bare_jid) {
- if let Some(resource) = from.resourcepart {
- presences.write().update_presence(resource, presence);
+ if let Some(resource) = from.resourcepart() {
+ presences.write().update_presence(resource.clone(), presence);
}
} else {
- if let Some(resource) = from.resourcepart {
+ if let Some(resource) = from.resourcepart() {
let mut presences = Presences::new();
- presences.update_presence(resource, presence);
+ presences.update_presence(resource.clone(), presence);
user_presences.write().user_presences.insert(bare_jid, ArcRwSignal::new(presences));
}
}
@@ -779,7 +779,7 @@ pub fn toggle_open(state: &mut Option<SidebarOpen>, open: SidebarOpen) -> bool {
#[component]
pub fn Sidebar() -> impl IntoView {
- let requests: ReadSignal<HashSet<JID>> = use_context().expect("no pending subscriptions in context");
+ let requests: ReadSignal<HashSet<BareJID>> = use_context().expect("no pending subscriptions in context");
// for what has been clicked open (in the background)
let (open, set_open) = signal(None::<SidebarOpen>);
@@ -932,7 +932,7 @@ pub fn PersonalStatusMenu(user: Store<User>, set_open: WriteSignal<bool>) -> imp
let client = use_context::<Client>().expect("client not in context");
let client1 = client.clone();
let (show_value, set_show_value) = signal({
- let show = match user_presences.write().get_user_presences(&user.jid().read().as_bare()).write().resource_presence(client.resource.read().clone().unwrap_or_default()).presence {
+ let show = match user_presences.write().get_user_presences(&user.jid().read()).write().resource_presence(client.resource.read().clone().unwrap_or_default()).presence {
PresenceType::Online(online) => match online.show {
Some(s) => match s {
Show::Away => 3,
@@ -1371,7 +1371,7 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView {
let each = move || {
let mut last_timestamp = NaiveDateTime::MIN;
- let mut last_user: Option<JID> = None;
+ let mut last_user: Option<BareJID> = None;
let mut messages = messages
.get()
.into_iter()
@@ -1613,7 +1613,7 @@ pub fn Message(message: MacawMessage, major: bool, r#final: bool) -> impl IntoVi
}
#[component]
-pub fn ChatViewMessageComposer(chat: JID) -> impl IntoView {
+pub fn ChatViewMessageComposer(chat: BareJID) -> impl IntoView {
let message_input: NodeRef<Div> = NodeRef::new();
// TODO: load last message draft
@@ -1938,15 +1938,15 @@ impl<K: Eq + std::hash::Hash + Send + Sync + 'static, V: Send + Sync + 'static>
#[derive(Clone)]
struct MacawChat {
- chat: StateListener<JID, ArcStore<Chat>>,
- user: StateListener<JID, ArcStore<User>>,
+ chat: StateListener<BareJID, ArcStore<Chat>>,
+ user: StateListener<BareJID, ArcStore<User>>,
}
impl MacawChat {
fn got_chat_and_user(chat: Chat, user: User) -> Self {
- let chat_state_store: StateStore<JID, ArcStore<Chat>> =
+ let chat_state_store: StateStore<BareJID, ArcStore<Chat>> =
use_context().expect("no chat state store");
- let user_state_store: StateStore<JID, ArcStore<User>> =
+ let user_state_store: StateStore<BareJID, ArcStore<User>> =
use_context().expect("no user state store");
let user = user_state_store.store(user.jid.clone(), ArcStore::new(user));
let chat = chat_state_store.store(chat.correspondent.clone(), ArcStore::new(chat));
@@ -1955,7 +1955,7 @@ impl MacawChat {
}
impl Deref for MacawChat {
- type Target = StateListener<JID, ArcStore<Chat>>;
+ type Target = StateListener<BareJID, ArcStore<Chat>>;
fn deref(&self) -> &Self::Target {
&self.chat
@@ -1971,14 +1971,14 @@ impl DerefMut for MacawChat {
#[derive(Clone)]
struct MacawMessage {
message: StateListener<Uuid, ArcStore<Message>>,
- user: StateListener<JID, ArcStore<User>>,
+ user: StateListener<BareJID, ArcStore<User>>,
}
impl MacawMessage {
fn got_message_and_user(message: Message, user: User) -> Self {
let message_state_store: StateStore<Uuid, ArcStore<Message>> =
use_context().expect("no message state store");
- let user_state_store: StateStore<JID, ArcStore<User>> =
+ let user_state_store: StateStore<BareJID, ArcStore<User>> =
use_context().expect("no user state store");
let message = message_state_store.store(message.id, ArcStore::new(message));
let user = user_state_store.store(user.jid.clone(), ArcStore::new(user));
@@ -2002,13 +2002,13 @@ impl DerefMut for MacawMessage {
#[derive(Clone)]
struct MacawUser {
- user: StateListener<JID, ArcStore<User>>,
+ user: StateListener<BareJID, ArcStore<User>>,
}
impl MacawUser {
fn got_user(user: User) -> Self {
- let user_state_store: StateStore<JID, ArcStore<User>> =
+ let user_state_store: StateStore<BareJID, ArcStore<User>> =
use_context().expect("no user state store");
let user = user_state_store.store(user.jid.clone(), ArcStore::new(user));
Self { user }
@@ -2016,7 +2016,7 @@ impl MacawUser {
}
impl Deref for MacawUser {
- type Target = StateListener<JID, ArcStore<User>>;
+ type Target = StateListener<BareJID, ArcStore<User>>;
fn deref(&self) -> &Self::Target {
&self.user
@@ -2032,13 +2032,13 @@ impl DerefMut for MacawUser {
#[derive(Clone)]
struct MacawContact {
contact: Store<Contact>,
- user: StateListener<JID, ArcStore<User>>,
+ user: StateListener<BareJID, ArcStore<User>>,
}
impl MacawContact {
fn got_contact_and_user(contact: Contact, user: User) -> Self {
let contact = Store::new(contact);
- let user_state_store: StateStore<JID, ArcStore<User>> =
+ let user_state_store: StateStore<BareJID, ArcStore<User>> =
use_context().expect("no user state store");
let user = user_state_store.store(user.jid.clone(), ArcStore::new(user));
Self { contact, user }
@@ -2082,7 +2082,7 @@ fn ChatsList() -> impl IntoView {
),
)
})
- .collect::<IndexMap<JID, _>>();
+ .collect::<IndexMap<BareJID, _>>();
set_chats.set(chats);
}
Err(_) => {
@@ -2189,9 +2189,9 @@ fn NewChatWidget(set_open_new_chat: WriteSignal<bool>) -> impl IntoView {
use_context().expect("no open chats panel store in context");
let client = use_context::<Client>().expect("client not in context");
- let chat_state_store: StateStore<JID, ArcStore<Chat>> =
+ let chat_state_store: StateStore<BareJID, ArcStore<Chat>> =
use_context().expect("no chat state store");
- let user_state_store: StateStore<JID, ArcStore<User>> =
+ let user_state_store: StateStore<BareJID, ArcStore<User>> =
use_context().expect("no user state store");
let open_chat = Action::new_local(move |_| {
@@ -2206,7 +2206,8 @@ fn NewChatWidget(set_open_new_chat: WriteSignal<bool>) -> impl IntoView {
}
let jid = match JID::from_str(&jid.read_untracked()) {
- Ok(j) => j,
+ // TODO: ability to direct address a resource?
+ Ok(j) => j.to_bare(),
Err(e) => {
set_error.set(Some(e.into()));
set_new_chat_pending.set(false);
@@ -2214,7 +2215,7 @@ fn NewChatWidget(set_open_new_chat: WriteSignal<bool>) -> impl IntoView {
}
};
- let chat_jid = jid.as_bare();
+ let chat_jid = jid;
let (chat, user) = match client.get_chat_and_user(chat_jid).await {
Ok(c) => c,
Err(e) => {
@@ -2270,7 +2271,7 @@ fn NewChatWidget(set_open_new_chat: WriteSignal<bool>) -> impl IntoView {
#[component]
fn RosterList() -> impl IntoView {
- let requests: ReadSignal<HashSet<JID>> = use_context().expect("no pending subscriptions in context");
+ let requests: ReadSignal<HashSet<BareJID>> = use_context().expect("no pending subscriptions in context");
let roster: Store<Roster> = use_context().expect("no roster in context");
let (open_add_contact, set_open_add_contact) = signal(false);
@@ -2325,8 +2326,8 @@ pub enum AddContactError {
#[component]
fn AddContact() -> impl IntoView {
- let requests: ReadSignal<HashSet<JID>> = use_context().expect("no pending subscriptions in context");
- let set_requests: WriteSignal<HashSet<JID>> = use_context().expect("no pending subscriptions write signal in context");
+ let requests: ReadSignal<HashSet<BareJID>> = use_context().expect("no pending subscriptions in context");
+ let set_requests: WriteSignal<HashSet<BareJID>> = use_context().expect("no pending subscriptions write signal in context");
let roster: Store<Roster> = use_context().expect("no roster in context");
let jid = RwSignal::new("".to_string());
@@ -2360,7 +2361,7 @@ fn AddContact() -> impl IntoView {
}
let jid = match JID::from_str(&jid.read_untracked()) {
- Ok(j) => j,
+ Ok(j) => j.to_bare(),
Err(e) => {
set_error.set(Some(e.into()));
set_add_contact_pending.set(false);
@@ -2368,7 +2369,7 @@ fn AddContact() -> impl IntoView {
}
};
- let chat_jid = jid.as_bare();
+ let chat_jid = jid;
// TODO: more options?
match client.buddy_request(chat_jid).await {
Ok(c) => c,
@@ -2408,7 +2409,7 @@ fn AddContact() -> impl IntoView {
}
}).collect::<Vec<_>>();
- let accept_friend_request = Action::new_local(move |jid: &JID| {
+ let accept_friend_request = Action::new_local(move |jid: &BareJID| {
let client = client2.clone();
let jid = jid.clone();
async move {
@@ -2417,7 +2418,7 @@ fn AddContact() -> impl IntoView {
}
});
- let reject_friend_request = Action::new_local(move |jid: &JID| {
+ let reject_friend_request = Action::new_local(move |jid: &BareJID| {
let client = client3.clone();
let jid = jid.clone();
async move {
@@ -2427,7 +2428,7 @@ fn AddContact() -> impl IntoView {
}
});
- let cancel_subscription_request = Action::new_local(move |jid: &JID| {
+ let cancel_subscription_request = Action::new_local(move |jid: &BareJID| {
let client = client4.clone();
let jid = jid.clone();
async move {