feat: update whitenoise-rs and add MIP-05 push registration bridge (#548)

This commit is contained in:
JeffG
2026-04-03 03:08:08 -03:00
committed by GitHub
parent 4f4eeb6c86
commit f1174d9d2f
7 changed files with 1104 additions and 272 deletions
+129 -61
View File
@@ -1709,9 +1709,9 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
[[package]]
name = "hyper"
version = "1.8.1"
version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11"
checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca"
dependencies = [
"atomic-waker",
"bytes",
@@ -1722,7 +1722,6 @@ dependencies = [
"httparse",
"itoa",
"pin-project-lite",
"pin-utils",
"smallvec",
"tokio",
"want",
@@ -1794,12 +1793,13 @@ dependencies = [
[[package]]
name = "icu_collections"
version = "2.1.1"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c"
dependencies = [
"displaydoc",
"potential_utf",
"utf8_iter",
"yoke",
"zerofrom",
"zerovec",
@@ -1807,9 +1807,9 @@ dependencies = [
[[package]]
name = "icu_locale_core"
version = "2.1.1"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29"
dependencies = [
"displaydoc",
"litemap",
@@ -1820,9 +1820,9 @@ dependencies = [
[[package]]
name = "icu_normalizer"
version = "2.1.1"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4"
dependencies = [
"icu_collections",
"icu_normalizer_data",
@@ -1834,15 +1834,15 @@ dependencies = [
[[package]]
name = "icu_normalizer_data"
version = "2.1.1"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38"
[[package]]
name = "icu_properties"
version = "2.1.2"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de"
dependencies = [
"icu_collections",
"icu_locale_core",
@@ -1854,15 +1854,15 @@ dependencies = [
[[package]]
name = "icu_properties_data"
version = "2.1.2"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14"
[[package]]
name = "icu_provider"
version = "2.1.1"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421"
dependencies = [
"displaydoc",
"icu_locale_core",
@@ -2081,9 +2081,9 @@ dependencies = [
[[package]]
name = "js-sys"
version = "0.3.92"
version = "0.3.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc4c90f45aa2e6eacbe8645f77fdea542ac97a494bcd117a67df9ff4d611f995"
checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9"
dependencies = [
"cfg-if",
"futures-util",
@@ -2142,9 +2142,9 @@ checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8"
[[package]]
name = "libc"
version = "0.2.183"
version = "0.2.184"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d"
checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af"
[[package]]
name = "libcrux-aead"
@@ -2449,9 +2449,9 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
[[package]]
name = "litemap"
version = "0.8.1"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"
[[package]]
name = "lock_api"
@@ -3103,12 +3103,6 @@ version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
[[package]]
name = "pin-utils"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkcs1"
version = "0.7.5"
@@ -3198,9 +3192,9 @@ dependencies = [
[[package]]
name = "potential_utf"
version = "0.1.4"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564"
dependencies = [
"zerovec",
]
@@ -3362,7 +3356,7 @@ dependencies = [
"once_cell",
"socket2",
"tracing",
"windows-sys 0.59.0",
"windows-sys 0.60.2",
]
[[package]]
@@ -4579,9 +4573,9 @@ dependencies = [
[[package]]
name = "tinystr"
version = "0.8.2"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d"
dependencies = [
"displaydoc",
"zerovec",
@@ -5076,9 +5070,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
[[package]]
name = "wasm-bindgen"
version = "0.2.115"
version = "0.2.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6523d69017b7633e396a89c5efab138161ed5aafcbc8d3e5c5a42ae38f50495a"
checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0"
dependencies = [
"cfg-if",
"once_cell",
@@ -5089,9 +5083,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
version = "0.4.65"
version = "0.4.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d1faf851e778dfa54db7cd438b70758eba9755cb47403f3496edd7c8fc212f0"
checksum = "03623de6905b7206edd0a75f69f747f134b7f0a2323392d664448bf2d3c5d87e"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -5099,9 +5093,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.115"
version = "0.2.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e3a6c758eb2f701ed3d052ff5737f5bfe6614326ea7f3bbac7156192dc32e67"
checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -5109,9 +5103,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.115"
version = "0.2.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "921de2737904886b52bcbb237301552d05969a6f9c40d261eb0533c8b055fedf"
checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2"
dependencies = [
"bumpalo",
"proc-macro2",
@@ -5122,9 +5116,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.115"
version = "0.2.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a93e946af942b58934c604527337bad9ae33ba1d5c6900bbb41c2c07c2364a93"
checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b"
dependencies = [
"unicode-ident",
]
@@ -5178,9 +5172,9 @@ dependencies = [
[[package]]
name = "web-sys"
version = "0.3.92"
version = "0.3.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "84cde8507f4d7cfcb1185b8cb5890c494ffea65edbe1ba82cfd63661c805ed94"
checksum = "cd70027e39b12f0849461e08ffc50b9cd7688d942c1c8e3c7b22273236b4dd0a"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -5405,6 +5399,15 @@ dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "windows-sys"
version = "0.60.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
dependencies = [
"windows-targets 0.53.5",
]
[[package]]
name = "windows-sys"
version = "0.61.2"
@@ -5438,13 +5441,30 @@ dependencies = [
"windows_aarch64_gnullvm 0.52.6",
"windows_aarch64_msvc 0.52.6",
"windows_i686_gnu 0.52.6",
"windows_i686_gnullvm",
"windows_i686_gnullvm 0.52.6",
"windows_i686_msvc 0.52.6",
"windows_x86_64_gnu 0.52.6",
"windows_x86_64_gnullvm 0.52.6",
"windows_x86_64_msvc 0.52.6",
]
[[package]]
name = "windows-targets"
version = "0.53.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
dependencies = [
"windows-link",
"windows_aarch64_gnullvm 0.53.1",
"windows_aarch64_msvc 0.53.1",
"windows_i686_gnu 0.53.1",
"windows_i686_gnullvm 0.53.1",
"windows_i686_msvc 0.53.1",
"windows_x86_64_gnu 0.53.1",
"windows_x86_64_gnullvm 0.53.1",
"windows_x86_64_msvc 0.53.1",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.42.2"
@@ -5457,6 +5477,12 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
[[package]]
name = "windows_aarch64_msvc"
version = "0.42.2"
@@ -5469,6 +5495,12 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_aarch64_msvc"
version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
[[package]]
name = "windows_i686_gnu"
version = "0.42.2"
@@ -5481,12 +5513,24 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnu"
version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_gnullvm"
version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
[[package]]
name = "windows_i686_msvc"
version = "0.42.2"
@@ -5499,6 +5543,12 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_i686_msvc"
version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
[[package]]
name = "windows_x86_64_gnu"
version = "0.42.2"
@@ -5511,6 +5561,12 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnu"
version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.42.2"
@@ -5523,6 +5579,12 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
[[package]]
name = "windows_x86_64_msvc"
version = "0.42.2"
@@ -5535,6 +5597,12 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "windows_x86_64_msvc"
version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
[[package]]
name = "winnow"
version = "0.7.15"
@@ -5658,9 +5726,9 @@ checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448"
[[package]]
name = "yoke"
version = "0.8.1"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca"
dependencies = [
"stable_deref_trait",
"yoke-derive",
@@ -5669,9 +5737,9 @@ dependencies = [
[[package]]
name = "yoke-derive"
version = "0.8.1"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"
dependencies = [
"proc-macro2",
"quote",
@@ -5701,18 +5769,18 @@ dependencies = [
[[package]]
name = "zerofrom"
version = "0.1.6"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df"
dependencies = [
"zerofrom-derive",
]
[[package]]
name = "zerofrom-derive"
version = "0.1.6"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"
dependencies = [
"proc-macro2",
"quote",
@@ -5742,9 +5810,9 @@ dependencies = [
[[package]]
name = "zerotrie"
version = "0.2.3"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf"
dependencies = [
"displaydoc",
"yoke",
@@ -5753,9 +5821,9 @@ dependencies = [
[[package]]
name = "zerovec"
version = "0.11.5"
version = "0.11.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239"
dependencies = [
"yoke",
"zerofrom",
@@ -5764,9 +5832,9 @@ dependencies = [
[[package]]
name = "zerovec-derive"
version = "0.11.2"
version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555"
dependencies = [
"proc-macro2",
"quote",
+1
View File
@@ -13,6 +13,7 @@ flutter_rust_bridge = { version = "=2.11.1", features = ["chrono"] }
hex = "0.4"
mdk-core = { version = "0.7.1", git = "https://github.com/marmot-protocol/mdk", rev = "ec9d719e8fc8e1027ff86bd6a11e8f8021bdbf00", features = [
"mip04",
"mip05",
] }
nostr-sdk = { version = "0.44", features = [
"nip04",
+104
View File
@@ -3,12 +3,16 @@ use crate::api::utils::group_id_to_string;
use crate::frb_generated::StreamSink;
use chrono::{DateTime, Utc};
use flutter_rust_bridge::frb;
use nostr_sdk::{PublicKey, RelayUrl};
use whitenoise::Whitenoise;
use whitenoise::whitenoise::notification_streaming::{
NotificationTrigger as WhitenoiseNotificationTrigger,
NotificationUpdate as WhitenoiseNotificationUpdate,
NotificationUser as WhitenoiseNotificationUser,
};
use whitenoise::whitenoise::push_notifications::{
PushPlatform as WhitenoisePushPlatform, PushRegistration as WhitenoisePushRegistration,
};
#[frb]
#[derive(Debug, Clone, PartialEq, Eq)]
@@ -100,6 +104,106 @@ pub async fn subscribe_to_notifications(
Ok(())
}
#[frb]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum PushPlatform {
Apns,
Fcm,
}
impl From<PushPlatform> for WhitenoisePushPlatform {
fn from(p: PushPlatform) -> Self {
match p {
PushPlatform::Apns => Self::Apns,
PushPlatform::Fcm => Self::Fcm,
}
}
}
impl From<WhitenoisePushPlatform> for PushPlatform {
fn from(p: WhitenoisePushPlatform) -> Self {
match p {
WhitenoisePushPlatform::Apns => Self::Apns,
WhitenoisePushPlatform::Fcm => Self::Fcm,
}
}
}
#[frb(non_opaque)]
#[derive(Debug, Clone)]
pub struct PushRegistration {
pub account_pubkey: String,
pub platform: PushPlatform,
pub raw_token: String,
pub server_pubkey: String,
pub relay_hint: Option<String>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
pub last_shared_at: Option<DateTime<Utc>>,
}
impl From<WhitenoisePushRegistration> for PushRegistration {
fn from(r: WhitenoisePushRegistration) -> Self {
Self {
account_pubkey: r.account_pubkey.to_hex(),
platform: r.platform.into(),
raw_token: r.raw_token,
server_pubkey: r.server_pubkey.to_hex(),
relay_hint: r.relay_hint.map(|u| u.to_string()),
created_at: r.created_at,
updated_at: r.updated_at,
last_shared_at: r.last_shared_at,
}
}
}
#[frb]
pub async fn get_push_registration(pubkey: String) -> Result<Option<PushRegistration>, ApiError> {
let whitenoise = Whitenoise::get_instance()?;
let pubkey = PublicKey::parse(&pubkey)?;
let account = whitenoise.find_account_by_pubkey(&pubkey).await?;
let registration = whitenoise.push_registration(&account).await?;
Ok(registration.map(PushRegistration::from))
}
#[frb]
pub async fn upsert_push_registration(
pubkey: String,
platform: PushPlatform,
raw_token: String,
server_pubkey: String,
relay_hint: Option<String>,
) -> Result<PushRegistration, ApiError> {
let whitenoise = Whitenoise::get_instance()?;
let pubkey = PublicKey::parse(&pubkey)?;
let account = whitenoise.find_account_by_pubkey(&pubkey).await?;
let server_pk = PublicKey::parse(&server_pubkey)?;
let relay = relay_hint
.as_deref()
.map(RelayUrl::parse)
.transpose()
.map_err(ApiError::from)?;
let registration = whitenoise
.upsert_push_registration(
&account,
platform.into(),
&raw_token,
&server_pk,
relay.as_ref(),
)
.await?;
Ok(registration.into())
}
#[frb]
pub async fn clear_push_registration(pubkey: String) -> Result<(), ApiError> {
let whitenoise = Whitenoise::get_instance()?;
let pubkey = PublicKey::parse(&pubkey)?;
let account = whitenoise.find_account_by_pubkey(&pubkey).await?;
whitenoise.clear_push_registration(&account).await?;
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
+383 -105
View File
@@ -43,7 +43,7 @@ flutter_rust_bridge::frb_generated_boilerplate!(
default_rust_auto_opaque = RustAutoOpaqueMoi,
);
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.11.1";
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 656235973;
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -1673891259;
// Section: executor
@@ -679,6 +679,43 @@ fn wire__crate__api__account_groups__archive_chat_impl(
},
)
}
fn wire__crate__api__notifications__clear_push_registration_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
rust_vec_len_: i32,
data_len_: i32,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "clear_push_registration",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
let message = unsafe {
flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(
ptr_,
rust_vec_len_,
data_len_,
)
};
let mut deserializer =
flutter_rust_bridge::for_generated::SseDeserializer::new(message);
let api_pubkey = <String>::sse_decode(&mut deserializer);
deserializer.end();
move |context| async move {
transform_result_sse::<_, crate::api::error::ApiError>(
(move || async move {
let output_ok =
crate::api::notifications::clear_push_registration(api_pubkey).await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__groups__create_group_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
@@ -1804,6 +1841,43 @@ fn wire__crate__api__groups__get_groups_informations_impl(
},
)
}
fn wire__crate__api__notifications__get_push_registration_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
rust_vec_len_: i32,
data_len_: i32,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "get_push_registration",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
let message = unsafe {
flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(
ptr_,
rust_vec_len_,
data_len_,
)
};
let mut deserializer =
flutter_rust_bridge::for_generated::SseDeserializer::new(message);
let api_pubkey = <String>::sse_decode(&mut deserializer);
deserializer.end();
move |context| async move {
transform_result_sse::<_, crate::api::error::ApiError>(
(move || async move {
let output_ok =
crate::api::notifications::get_push_registration(api_pubkey).await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__groups__get_ratchet_tree_info_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
@@ -4607,6 +4681,54 @@ fn wire__crate__api__groups__upload_group_image_impl(
},
)
}
fn wire__crate__api__notifications__upsert_push_registration_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
rust_vec_len_: i32,
data_len_: i32,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "upsert_push_registration",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
let message = unsafe {
flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(
ptr_,
rust_vec_len_,
data_len_,
)
};
let mut deserializer =
flutter_rust_bridge::for_generated::SseDeserializer::new(message);
let api_pubkey = <String>::sse_decode(&mut deserializer);
let api_platform =
<crate::api::notifications::PushPlatform>::sse_decode(&mut deserializer);
let api_raw_token = <String>::sse_decode(&mut deserializer);
let api_server_pubkey = <String>::sse_decode(&mut deserializer);
let api_relay_hint = <Option<String>>::sse_decode(&mut deserializer);
deserializer.end();
move |context| async move {
transform_result_sse::<_, crate::api::error::ApiError>(
(move || async move {
let output_ok = crate::api::notifications::upsert_push_registration(
api_pubkey,
api_platform,
api_raw_token,
api_server_pubkey,
api_relay_hint,
)
.await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__users__user_has_key_package_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
@@ -6384,6 +6506,19 @@ impl SseDecode for Option<i64> {
}
}
impl SseDecode for Option<crate::api::notifications::PushRegistration> {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
if (<bool>::sse_decode(deserializer)) {
return Some(<crate::api::notifications::PushRegistration>::sse_decode(
deserializer,
));
} else {
return None;
}
}
}
impl SseDecode for Option<u32> {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
@@ -6439,6 +6574,43 @@ impl SseDecode for Option<[u8; 32]> {
}
}
impl SseDecode for crate::api::notifications::PushPlatform {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut inner = <i32>::sse_decode(deserializer);
return match inner {
0 => crate::api::notifications::PushPlatform::Apns,
1 => crate::api::notifications::PushPlatform::Fcm,
_ => unreachable!("Invalid variant for PushPlatform: {}", inner),
};
}
}
impl SseDecode for crate::api::notifications::PushRegistration {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut var_accountPubkey = <String>::sse_decode(deserializer);
let mut var_platform = <crate::api::notifications::PushPlatform>::sse_decode(deserializer);
let mut var_rawToken = <String>::sse_decode(deserializer);
let mut var_serverPubkey = <String>::sse_decode(deserializer);
let mut var_relayHint = <Option<String>>::sse_decode(deserializer);
let mut var_createdAt = <chrono::DateTime<chrono::Utc>>::sse_decode(deserializer);
let mut var_updatedAt = <chrono::DateTime<chrono::Utc>>::sse_decode(deserializer);
let mut var_lastSharedAt =
<Option<chrono::DateTime<chrono::Utc>>>::sse_decode(deserializer);
return crate::api::notifications::PushRegistration {
account_pubkey: var_accountPubkey,
platform: var_platform,
raw_token: var_rawToken,
server_pubkey: var_serverPubkey,
relay_hint: var_relayHint,
created_at: var_createdAt,
updated_at: var_updatedAt,
last_shared_at: var_lastSharedAt,
};
}
}
impl SseDecode for crate::api::groups::RatchetTreeInfo {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
@@ -6801,286 +6973,304 @@ fn pde_ffi_dispatcher_primary_impl(
15 => {
wire__crate__api__account_groups__archive_chat_impl(port, ptr, rust_vec_len, data_len)
}
16 => wire__crate__api__groups__create_group_impl(port, ptr, rust_vec_len, data_len),
17 => wire__crate__api__accounts__create_identity_impl(port, ptr, rust_vec_len, data_len),
18 => wire__crate__api__create_whitenoise_config_impl(port, ptr, rust_vec_len, data_len),
19 => wire__crate__api__relays__debug_relay_control_state_impl(
16 => wire__crate__api__notifications__clear_push_registration_impl(
port,
ptr,
rust_vec_len,
data_len,
),
20 => wire__crate__api__account_groups__decline_account_group_impl(
17 => wire__crate__api__groups__create_group_impl(port, ptr, rust_vec_len, data_len),
18 => wire__crate__api__accounts__create_identity_impl(port, ptr, rust_vec_len, data_len),
19 => wire__crate__api__create_whitenoise_config_impl(port, ptr, rust_vec_len, data_len),
20 => wire__crate__api__relays__debug_relay_control_state_impl(
port,
ptr,
rust_vec_len,
data_len,
),
21 => wire__crate__api__accounts__delete_account_key_package_impl(
21 => wire__crate__api__account_groups__decline_account_group_impl(
port,
ptr,
rust_vec_len,
data_len,
),
22 => wire__crate__api__accounts__delete_account_key_packages_impl(
22 => wire__crate__api__accounts__delete_account_key_package_impl(
port,
ptr,
rust_vec_len,
data_len,
),
23 => wire__crate__api__delete_all_data_impl(port, ptr, rust_vec_len, data_len),
24 => wire__crate__api__drafts__delete_draft_impl(port, ptr, rust_vec_len, data_len),
25 => wire__crate__api__media_files__download_chat_media_impl(
23 => wire__crate__api__accounts__delete_account_key_packages_impl(
port,
ptr,
rust_vec_len,
data_len,
),
26 => wire__crate__api__relays__ensure_all_subscriptions_impl(
24 => wire__crate__api__delete_all_data_impl(port, ptr, rust_vec_len, data_len),
25 => wire__crate__api__drafts__delete_draft_impl(port, ptr, rust_vec_len, data_len),
26 => wire__crate__api__media_files__download_chat_media_impl(
port,
ptr,
rust_vec_len,
data_len,
),
28 => {
27 => wire__crate__api__relays__ensure_all_subscriptions_impl(
port,
ptr,
rust_vec_len,
data_len,
),
29 => {
wire__crate__api__accounts__export_account_nsec_impl(port, ptr, rust_vec_len, data_len)
}
29 => wire__crate__api__messages__fetch_aggregated_messages_for_group_impl(
30 => wire__crate__api__messages__fetch_aggregated_messages_for_group_impl(
port,
ptr,
rust_vec_len,
data_len,
),
30 => wire__crate__api__zapstore__fetch_latest_zapstore_version_impl(
31 => wire__crate__api__zapstore__fetch_latest_zapstore_version_impl(
port,
ptr,
rust_vec_len,
data_len,
),
31 => {
32 => {
wire__crate__api__messages__fetch_message_by_id_impl(port, ptr, rust_vec_len, data_len)
}
32 => wire__crate__api__messages__fetch_messages_unread_with_minimum_impl(
33 => wire__crate__api__messages__fetch_messages_unread_with_minimum_impl(
port,
ptr,
rust_vec_len,
data_len,
),
33 => wire__crate__api__accounts__follow_user_impl(port, ptr, rust_vec_len, data_len),
34 => wire__crate__api__accounts__get_account_impl(port, ptr, rust_vec_len, data_len),
35 => wire__crate__api__account_groups__get_account_group_impl(
34 => wire__crate__api__accounts__follow_user_impl(port, ptr, rust_vec_len, data_len),
35 => wire__crate__api__accounts__get_account_impl(port, ptr, rust_vec_len, data_len),
36 => wire__crate__api__account_groups__get_account_group_impl(
port,
ptr,
rust_vec_len,
data_len,
),
36 => wire__crate__api__accounts__get_accounts_impl(port, ptr, rust_vec_len, data_len),
37 => wire__crate__api__get_app_settings_impl(port, ptr, rust_vec_len, data_len),
38 => wire__crate__api__chat_list__get_chat_list_impl(port, ptr, rust_vec_len, data_len),
39 => wire__crate__api__utils__get_default_blossom_server_url_impl(
37 => wire__crate__api__accounts__get_accounts_impl(port, ptr, rust_vec_len, data_len),
38 => wire__crate__api__get_app_settings_impl(port, ptr, rust_vec_len, data_len),
39 => wire__crate__api__chat_list__get_chat_list_impl(port, ptr, rust_vec_len, data_len),
40 => wire__crate__api__utils__get_default_blossom_server_url_impl(
port,
ptr,
rust_vec_len,
data_len,
),
40 => wire__crate__api__account_groups__get_dm_group_with_peer_impl(
41 => wire__crate__api__account_groups__get_dm_group_with_peer_impl(
port,
ptr,
rust_vec_len,
data_len,
),
41 => wire__crate__api__groups__get_group_impl(port, ptr, rust_vec_len, data_len),
42 => {
42 => wire__crate__api__groups__get_group_impl(port, ptr, rust_vec_len, data_len),
43 => {
wire__crate__api__groups__get_group_image_path_impl(port, ptr, rust_vec_len, data_len)
}
43 => {
44 => {
wire__crate__api__groups__get_group_information_impl(port, ptr, rust_vec_len, data_len)
}
44 => wire__crate__api__groups__get_groups_informations_impl(
45 => wire__crate__api__groups__get_groups_informations_impl(
port,
ptr,
rust_vec_len,
data_len,
),
45 => {
46 => wire__crate__api__notifications__get_push_registration_impl(
port,
ptr,
rust_vec_len,
data_len,
),
47 => {
wire__crate__api__groups__get_ratchet_tree_info_impl(port, ptr, rust_vec_len, data_len)
}
46 => wire__crate__api__users__get_user_impl(port, ptr, rust_vec_len, data_len),
47 => wire__crate__api__groups__group_admins_impl(port, ptr, rust_vec_len, data_len),
48 => wire__crate__api__groups__group_group_type_impl(port, ptr, rust_vec_len, data_len),
49 => wire__crate__api__utils__group_id_from_string_impl(port, ptr, rust_vec_len, data_len),
50 => wire__crate__api__utils__group_id_to_string_impl(port, ptr, rust_vec_len, data_len),
51 => wire__crate__api__groups__group_is_direct_message_type_impl(
48 => wire__crate__api__users__get_user_impl(port, ptr, rust_vec_len, data_len),
49 => wire__crate__api__groups__group_admins_impl(port, ptr, rust_vec_len, data_len),
50 => wire__crate__api__groups__group_group_type_impl(port, ptr, rust_vec_len, data_len),
51 => wire__crate__api__utils__group_id_from_string_impl(port, ptr, rust_vec_len, data_len),
52 => wire__crate__api__utils__group_id_to_string_impl(port, ptr, rust_vec_len, data_len),
53 => wire__crate__api__groups__group_is_direct_message_type_impl(
port,
ptr,
rust_vec_len,
data_len,
),
52 => wire__crate__api__groups__group_is_group_type_impl(port, ptr, rust_vec_len, data_len),
53 => wire__crate__api__groups__group_members_impl(port, ptr, rust_vec_len, data_len),
54 => wire__crate__api__groups__group_update_group_data_impl(
54 => wire__crate__api__groups__group_is_group_type_impl(port, ptr, rust_vec_len, data_len),
55 => wire__crate__api__groups__group_members_impl(port, ptr, rust_vec_len, data_len),
56 => wire__crate__api__groups__group_update_group_data_impl(
port,
ptr,
rust_vec_len,
data_len,
),
56 => wire__crate__api__initialize_whitenoise_impl(port, ptr, rust_vec_len, data_len),
57 => wire__crate__api__accounts__is_following_user_impl(port, ptr, rust_vec_len, data_len),
68 => wire__crate__api__drafts__load_draft_impl(port, ptr, rust_vec_len, data_len),
69 => wire__crate__api__accounts__login_cancel_impl(port, ptr, rust_vec_len, data_len),
70 => wire__crate__api__signer__login_external_signer_publish_default_relays_impl(
58 => wire__crate__api__initialize_whitenoise_impl(port, ptr, rust_vec_len, data_len),
59 => wire__crate__api__accounts__is_following_user_impl(port, ptr, rust_vec_len, data_len),
70 => wire__crate__api__drafts__load_draft_impl(port, ptr, rust_vec_len, data_len),
71 => wire__crate__api__accounts__login_cancel_impl(port, ptr, rust_vec_len, data_len),
72 => wire__crate__api__signer__login_external_signer_publish_default_relays_impl(
port,
ptr,
rust_vec_len,
data_len,
),
71 => wire__crate__api__signer__login_external_signer_start_impl(
73 => wire__crate__api__signer__login_external_signer_start_impl(
port,
ptr,
rust_vec_len,
data_len,
),
72 => wire__crate__api__signer__login_external_signer_with_custom_relay_impl(
74 => wire__crate__api__signer__login_external_signer_with_custom_relay_impl(
port,
ptr,
rust_vec_len,
data_len,
),
73 => wire__crate__api__accounts__login_publish_default_relays_impl(
75 => wire__crate__api__accounts__login_publish_default_relays_impl(
port,
ptr,
rust_vec_len,
data_len,
),
74 => wire__crate__api__accounts__login_start_impl(port, ptr, rust_vec_len, data_len),
75 => wire__crate__api__accounts__login_with_custom_relay_impl(
76 => wire__crate__api__accounts__login_start_impl(port, ptr, rust_vec_len, data_len),
77 => wire__crate__api__accounts__login_with_custom_relay_impl(
port,
ptr,
rust_vec_len,
data_len,
),
76 => wire__crate__api__accounts__logout_impl(port, ptr, rust_vec_len, data_len),
77 => wire__crate__api__account_groups__mark_message_read_impl(
78 => wire__crate__api__accounts__logout_impl(port, ptr, rust_vec_len, data_len),
79 => wire__crate__api__account_groups__mark_message_read_impl(
port,
ptr,
rust_vec_len,
data_len,
),
78 => wire__crate__api__chat_list__mute_chat_impl(port, ptr, rust_vec_len, data_len),
80 => wire__crate__api__accounts__publish_account_key_package_impl(
80 => wire__crate__api__chat_list__mute_chat_impl(port, ptr, rust_vec_len, data_len),
82 => wire__crate__api__accounts__publish_account_key_package_impl(
port,
ptr,
rust_vec_len,
data_len,
),
81 => wire__crate__api__signer__register_external_signer_impl(
83 => wire__crate__api__signer__register_external_signer_impl(
port,
ptr,
rust_vec_len,
data_len,
),
82 => wire__crate__api__relays__relay_type_inbox_impl(port, ptr, rust_vec_len, data_len),
83 => {
84 => wire__crate__api__relays__relay_type_inbox_impl(port, ptr, rust_vec_len, data_len),
85 => {
wire__crate__api__relays__relay_type_key_package_impl(port, ptr, rust_vec_len, data_len)
}
84 => wire__crate__api__relays__relay_type_nip65_impl(port, ptr, rust_vec_len, data_len),
85 => {
86 => wire__crate__api__relays__relay_type_nip65_impl(port, ptr, rust_vec_len, data_len),
87 => {
wire__crate__api__utils__relay_url_from_string_impl(port, ptr, rust_vec_len, data_len)
}
86 => {
88 => {
wire__crate__api__accounts__remove_account_relay_impl(port, ptr, rust_vec_len, data_len)
}
87 => wire__crate__api__groups__remove_members_from_group_impl(
89 => wire__crate__api__groups__remove_members_from_group_impl(
port,
ptr,
rust_vec_len,
data_len,
),
88 => wire__crate__api__messages__retry_message_publish_impl(
90 => wire__crate__api__messages__retry_message_publish_impl(
port,
ptr,
rust_vec_len,
data_len,
),
89 => wire__crate__api__drafts__save_draft_impl(port, ptr, rust_vec_len, data_len),
90 => wire__crate__api__user_search__search_users_impl(port, ptr, rust_vec_len, data_len),
91 => wire__crate__api__bug_report__send_bug_report_impl(port, ptr, rust_vec_len, data_len),
92 => wire__crate__api__messages__send_message_to_group_impl(
91 => wire__crate__api__drafts__save_draft_impl(port, ptr, rust_vec_len, data_len),
92 => wire__crate__api__user_search__search_users_impl(port, ptr, rust_vec_len, data_len),
93 => wire__crate__api__bug_report__send_bug_report_impl(port, ptr, rust_vec_len, data_len),
94 => wire__crate__api__messages__send_message_to_group_impl(
port,
ptr,
rust_vec_len,
data_len,
),
93 => {
95 => {
wire__crate__api__chat_list__set_chat_pin_order_impl(port, ptr, rust_vec_len, data_len)
}
94 => {
96 => {
wire__crate__api__utils__string_from_relay_url_impl(port, ptr, rust_vec_len, data_len)
}
95 => wire__crate__api__chat_list__subscribe_to_archived_chat_list_impl(
97 => wire__crate__api__chat_list__subscribe_to_archived_chat_list_impl(
port,
ptr,
rust_vec_len,
data_len,
),
96 => wire__crate__api__chat_list__subscribe_to_chat_list_impl(
98 => wire__crate__api__chat_list__subscribe_to_chat_list_impl(
port,
ptr,
rust_vec_len,
data_len,
),
97 => wire__crate__api__messages__subscribe_to_group_messages_impl(
99 => wire__crate__api__messages__subscribe_to_group_messages_impl(
port,
ptr,
rust_vec_len,
data_len,
),
98 => wire__crate__api__notifications__subscribe_to_notifications_impl(
100 => wire__crate__api__notifications__subscribe_to_notifications_impl(
port,
ptr,
rust_vec_len,
data_len,
),
99 => {
101 => {
wire__crate__api__logs__subscribe_to_rust_logs_impl(port, ptr, rust_vec_len, data_len)
}
100 => wire__crate__api__users__subscribe_to_user_impl(port, ptr, rust_vec_len, data_len),
101 => wire__crate__api__utils__tag_from_vec_impl(port, ptr, rust_vec_len, data_len),
106 => {
102 => wire__crate__api__users__subscribe_to_user_impl(port, ptr, rust_vec_len, data_len),
103 => wire__crate__api__utils__tag_from_vec_impl(port, ptr, rust_vec_len, data_len),
108 => {
wire__crate__api__account_groups__unarchive_chat_impl(port, ptr, rust_vec_len, data_len)
}
107 => wire__crate__api__accounts__unfollow_user_impl(port, ptr, rust_vec_len, data_len),
108 => wire__crate__api__chat_list__unmute_chat_impl(port, ptr, rust_vec_len, data_len),
109 => wire__crate__api__accounts__update_account_metadata_impl(
109 => wire__crate__api__accounts__unfollow_user_impl(port, ptr, rust_vec_len, data_len),
110 => wire__crate__api__chat_list__unmute_chat_impl(port, ptr, rust_vec_len, data_len),
111 => wire__crate__api__accounts__update_account_metadata_impl(
port,
ptr,
rust_vec_len,
data_len,
),
110 => wire__crate__api__update_language_impl(port, ptr, rust_vec_len, data_len),
111 => wire__crate__api__accounts__update_notifications_enabled_impl(
112 => wire__crate__api__update_language_impl(port, ptr, rust_vec_len, data_len),
113 => wire__crate__api__accounts__update_notifications_enabled_impl(
port,
ptr,
rust_vec_len,
data_len,
),
112 => wire__crate__api__update_theme_mode_impl(port, ptr, rust_vec_len, data_len),
113 => wire__crate__api__accounts__upload_account_profile_picture_impl(
114 => wire__crate__api__update_theme_mode_impl(port, ptr, rust_vec_len, data_len),
115 => wire__crate__api__accounts__upload_account_profile_picture_impl(
port,
ptr,
rust_vec_len,
data_len,
),
114 => {
116 => {
wire__crate__api__media_files__upload_chat_media_impl(port, ptr, rust_vec_len, data_len)
}
115 => wire__crate__api__groups__upload_group_image_impl(port, ptr, rust_vec_len, data_len),
116 => {
117 => wire__crate__api__groups__upload_group_image_impl(port, ptr, rust_vec_len, data_len),
118 => wire__crate__api__notifications__upsert_push_registration_impl(
port,
ptr,
rust_vec_len,
data_len,
),
119 => {
wire__crate__api__users__user_has_key_package_impl(port, ptr, rust_vec_len, data_len)
}
117 => wire__crate__api__users__user_metadata_impl(port, ptr, rust_vec_len, data_len),
118 => wire__crate__api__users__user_relays_impl(port, ptr, rust_vec_len, data_len),
119 => wire__crate__api__groups__visible_groups_with_info_impl(
120 => wire__crate__api__users__user_metadata_impl(port, ptr, rust_vec_len, data_len),
121 => wire__crate__api__users__user_relays_impl(port, ptr, rust_vec_len, data_len),
122 => wire__crate__api__groups__visible_groups_with_info_impl(
port,
ptr,
rust_vec_len,
@@ -7098,23 +7288,23 @@ fn pde_ffi_dispatcher_sync_impl(
) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse {
// Codec=Pde (Serialization + dispatch), see doc to use other codecs
match func_id {
27 => wire__crate__api__utils__event_id_to_nevent_uri_impl(ptr, rust_vec_len, data_len),
55 => wire__crate__api__utils__hex_pubkey_from_npub_impl(ptr, rust_vec_len, data_len),
58 => wire__crate__api__utils__language_english_impl(ptr, rust_vec_len, data_len),
59 => wire__crate__api__utils__language_french_impl(ptr, rust_vec_len, data_len),
60 => wire__crate__api__utils__language_german_impl(ptr, rust_vec_len, data_len),
61 => wire__crate__api__utils__language_italian_impl(ptr, rust_vec_len, data_len),
62 => wire__crate__api__utils__language_portuguese_impl(ptr, rust_vec_len, data_len),
63 => wire__crate__api__utils__language_russian_impl(ptr, rust_vec_len, data_len),
64 => wire__crate__api__utils__language_spanish_impl(ptr, rust_vec_len, data_len),
65 => wire__crate__api__utils__language_system_impl(ptr, rust_vec_len, data_len),
66 => wire__crate__api__utils__language_to_string_impl(ptr, rust_vec_len, data_len),
67 => wire__crate__api__utils__language_turkish_impl(ptr, rust_vec_len, data_len),
79 => wire__crate__api__utils__npub_from_hex_pubkey_impl(ptr, rust_vec_len, data_len),
102 => wire__crate__api__utils__theme_mode_dark_impl(ptr, rust_vec_len, data_len),
103 => wire__crate__api__utils__theme_mode_light_impl(ptr, rust_vec_len, data_len),
104 => wire__crate__api__utils__theme_mode_system_impl(ptr, rust_vec_len, data_len),
105 => wire__crate__api__utils__theme_mode_to_string_impl(ptr, rust_vec_len, data_len),
28 => wire__crate__api__utils__event_id_to_nevent_uri_impl(ptr, rust_vec_len, data_len),
57 => wire__crate__api__utils__hex_pubkey_from_npub_impl(ptr, rust_vec_len, data_len),
60 => wire__crate__api__utils__language_english_impl(ptr, rust_vec_len, data_len),
61 => wire__crate__api__utils__language_french_impl(ptr, rust_vec_len, data_len),
62 => wire__crate__api__utils__language_german_impl(ptr, rust_vec_len, data_len),
63 => wire__crate__api__utils__language_italian_impl(ptr, rust_vec_len, data_len),
64 => wire__crate__api__utils__language_portuguese_impl(ptr, rust_vec_len, data_len),
65 => wire__crate__api__utils__language_russian_impl(ptr, rust_vec_len, data_len),
66 => wire__crate__api__utils__language_spanish_impl(ptr, rust_vec_len, data_len),
67 => wire__crate__api__utils__language_system_impl(ptr, rust_vec_len, data_len),
68 => wire__crate__api__utils__language_to_string_impl(ptr, rust_vec_len, data_len),
69 => wire__crate__api__utils__language_turkish_impl(ptr, rust_vec_len, data_len),
81 => wire__crate__api__utils__npub_from_hex_pubkey_impl(ptr, rust_vec_len, data_len),
104 => wire__crate__api__utils__theme_mode_dark_impl(ptr, rust_vec_len, data_len),
105 => wire__crate__api__utils__theme_mode_light_impl(ptr, rust_vec_len, data_len),
106 => wire__crate__api__utils__theme_mode_system_impl(ptr, rust_vec_len, data_len),
107 => wire__crate__api__utils__theme_mode_to_string_impl(ptr, rust_vec_len, data_len),
_ => unreachable!(),
}
}
@@ -8186,6 +8376,54 @@ impl flutter_rust_bridge::IntoIntoDart<crate::api::notifications::NotificationUs
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::notifications::PushPlatform {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
match self {
Self::Apns => 0.into_dart(),
Self::Fcm => 1.into_dart(),
_ => unreachable!(),
}
}
}
impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive
for crate::api::notifications::PushPlatform
{
}
impl flutter_rust_bridge::IntoIntoDart<crate::api::notifications::PushPlatform>
for crate::api::notifications::PushPlatform
{
fn into_into_dart(self) -> crate::api::notifications::PushPlatform {
self
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::notifications::PushRegistration {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
[
self.account_pubkey.into_into_dart().into_dart(),
self.platform.into_into_dart().into_dart(),
self.raw_token.into_into_dart().into_dart(),
self.server_pubkey.into_into_dart().into_dart(),
self.relay_hint.into_into_dart().into_dart(),
self.created_at.into_into_dart().into_dart(),
self.updated_at.into_into_dart().into_dart(),
self.last_shared_at.into_into_dart().into_dart(),
]
.into_dart()
}
}
impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive
for crate::api::notifications::PushRegistration
{
}
impl flutter_rust_bridge::IntoIntoDart<crate::api::notifications::PushRegistration>
for crate::api::notifications::PushRegistration
{
fn into_into_dart(self) -> crate::api::notifications::PushRegistration {
self
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::groups::RatchetTreeInfo {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
[
@@ -9738,6 +9976,16 @@ impl SseEncode for Option<i64> {
}
}
impl SseEncode for Option<crate::api::notifications::PushRegistration> {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<bool>::sse_encode(self.is_some(), serializer);
if let Some(value) = self {
<crate::api::notifications::PushRegistration>::sse_encode(value, serializer);
}
}
}
impl SseEncode for Option<u32> {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
@@ -9788,6 +10036,36 @@ impl SseEncode for Option<[u8; 32]> {
}
}
impl SseEncode for crate::api::notifications::PushPlatform {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<i32>::sse_encode(
match self {
crate::api::notifications::PushPlatform::Apns => 0,
crate::api::notifications::PushPlatform::Fcm => 1,
_ => {
unimplemented!("");
}
},
serializer,
);
}
}
impl SseEncode for crate::api::notifications::PushRegistration {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<String>::sse_encode(self.account_pubkey, serializer);
<crate::api::notifications::PushPlatform>::sse_encode(self.platform, serializer);
<String>::sse_encode(self.raw_token, serializer);
<String>::sse_encode(self.server_pubkey, serializer);
<Option<String>>::sse_encode(self.relay_hint, serializer);
<chrono::DateTime<chrono::Utc>>::sse_encode(self.created_at, serializer);
<chrono::DateTime<chrono::Utc>>::sse_encode(self.updated_at, serializer);
<Option<chrono::DateTime<chrono::Utc>>>::sse_encode(self.last_shared_at, serializer);
}
}
impl SseEncode for crate::api::groups::RatchetTreeInfo {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {