diff --git a/lib/src/rust/api/notifications.dart b/lib/src/rust/api/notifications.dart index 8a5c720..4b22bb7 100644 --- a/lib/src/rust/api/notifications.dart +++ b/lib/src/rust/api/notifications.dart @@ -8,11 +8,33 @@ import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; import '../frb_generated.dart'; import 'error.dart'; -// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `assert_receiver_is_total_eq`, `clone`, `clone`, `clone`, `eq`, `fmt`, `fmt`, `fmt`, `from`, `from`, `from` +// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `assert_receiver_is_total_eq`, `assert_receiver_is_total_eq`, `clone`, `clone`, `clone`, `clone`, `clone`, `eq`, `eq`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `from`, `from`, `from`, `from`, `from`, `from` Stream subscribeToNotifications() => RustLib.instance.api.crateApiNotificationsSubscribeToNotifications(); +Future getPushRegistration({required String pubkey}) => + RustLib.instance.api.crateApiNotificationsGetPushRegistration( + pubkey: pubkey, + ); + +Future upsertPushRegistration({ + required String pubkey, + required PushPlatform platform, + required String rawToken, + required String serverPubkey, + String? relayHint, +}) => RustLib.instance.api.crateApiNotificationsUpsertPushRegistration( + pubkey: pubkey, + platform: platform, + rawToken: rawToken, + serverPubkey: serverPubkey, + relayHint: relayHint, +); + +Future clearPushRegistration({required String pubkey}) => + RustLib.instance.api.crateApiNotificationsClearPushRegistration(pubkey: pubkey); + enum NotificationTrigger { newMessage, groupInvite, @@ -88,3 +110,55 @@ class NotificationUser { displayName == other.displayName && pictureUrl == other.pictureUrl; } + +enum PushPlatform { + apns, + fcm, +} + +class PushRegistration { + final String accountPubkey; + final PushPlatform platform; + final String rawToken; + final String serverPubkey; + final String? relayHint; + final DateTime createdAt; + final DateTime updatedAt; + final DateTime? lastSharedAt; + + const PushRegistration({ + required this.accountPubkey, + required this.platform, + required this.rawToken, + required this.serverPubkey, + this.relayHint, + required this.createdAt, + required this.updatedAt, + this.lastSharedAt, + }); + + @override + int get hashCode => + accountPubkey.hashCode ^ + platform.hashCode ^ + rawToken.hashCode ^ + serverPubkey.hashCode ^ + relayHint.hashCode ^ + createdAt.hashCode ^ + updatedAt.hashCode ^ + lastSharedAt.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is PushRegistration && + runtimeType == other.runtimeType && + accountPubkey == other.accountPubkey && + platform == other.platform && + rawToken == other.rawToken && + serverPubkey == other.serverPubkey && + relayHint == other.relayHint && + createdAt == other.createdAt && + updatedAt == other.updatedAt && + lastSharedAt == other.lastSharedAt; +} diff --git a/lib/src/rust/frb_generated.dart b/lib/src/rust/frb_generated.dart index 119a3b2..63b34f7 100644 --- a/lib/src/rust/frb_generated.dart +++ b/lib/src/rust/frb_generated.dart @@ -86,7 +86,7 @@ class RustLib extends BaseEntrypoint { String get codegenVersion => '2.11.1'; @override - int get rustContentHash => 656235973; + int get rustContentHash => -1673891259; static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( stem: 'rust_lib_whitenoise', @@ -160,6 +160,10 @@ abstract class RustLibApi extends BaseApi { required String mlsGroupId, }); + Future crateApiNotificationsClearPushRegistration({ + required String pubkey, + }); + Future crateApiGroupsCreateGroup({ required String creatorPubkey, required List memberPubkeys, @@ -283,6 +287,10 @@ abstract class RustLibApi extends BaseApi { required List groupIds, }); + Future crateApiNotificationsGetPushRegistration({ + required String pubkey, + }); + Future crateApiGroupsGetRatchetTreeInfo({ required String accountPubkey, required String groupId, @@ -570,6 +578,14 @@ abstract class RustLibApi extends BaseApi { required String serverUrl, }); + Future crateApiNotificationsUpsertPushRegistration({ + required String pubkey, + required PushPlatform platform, + required String rawToken, + required String serverPubkey, + String? relayHint, + }); + Future crateApiUsersUserHasKeyPackage({ required String pubkey, required bool blockingDataSync, @@ -1196,6 +1212,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ['accountPubkey', 'mlsGroupId'], ); + @override + Future crateApiNotificationsClearPushRegistration({ + required String pubkey, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(pubkey, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 16, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_api_error, + ), + constMeta: kCrateApiNotificationsClearPushRegistrationConstMeta, + argValues: [pubkey], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiNotificationsClearPushRegistrationConstMeta => const TaskConstMeta( + debugName: 'clear_push_registration', + argNames: ['pubkey'], + ); + @override Future crateApiGroupsCreateGroup({ required String creatorPubkey, @@ -1218,7 +1266,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 16, + funcId: 17, port: port_, ); }, @@ -1261,7 +1309,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 17, + funcId: 18, port: port_, ); }, @@ -1295,7 +1343,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 18, + funcId: 19, port: port_, ); }, @@ -1324,7 +1372,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 19, + funcId: 20, port: port_, ); }, @@ -1358,7 +1406,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 20, + funcId: 21, port: port_, ); }, @@ -1392,7 +1440,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 21, + funcId: 22, port: port_, ); }, @@ -1424,7 +1472,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 22, + funcId: 23, port: port_, ); }, @@ -1453,7 +1501,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 23, + funcId: 24, port: port_, ); }, @@ -1487,7 +1535,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 24, + funcId: 25, port: port_, ); }, @@ -1523,7 +1571,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 25, + funcId: 26, port: port_, ); }, @@ -1552,7 +1600,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 26, + funcId: 27, port: port_, ); }, @@ -1583,7 +1631,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { final serializer = SseSerializer(generalizedFrbRustBinding); sse_encode_String(eventIdHex, serializer); sse_encode_String(pubkeyHex, serializer); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 27)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 28)!; }, codec: SseCodec( decodeSuccessData: sse_decode_String, @@ -1611,7 +1659,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 28, + funcId: 29, port: port_, ); }, @@ -1651,7 +1699,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 29, + funcId: 30, port: port_, ); }, @@ -1681,7 +1729,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 30, + funcId: 31, port: port_, ); }, @@ -1717,7 +1765,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 31, + funcId: 32, port: port_, ); }, @@ -1753,7 +1801,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 32, + funcId: 33, port: port_, ); }, @@ -1787,7 +1835,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 33, + funcId: 34, port: port_, ); }, @@ -1817,7 +1865,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 34, + funcId: 35, port: port_, ); }, @@ -1851,7 +1899,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 35, + funcId: 36, port: port_, ); }, @@ -1880,7 +1928,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 36, + funcId: 37, port: port_, ); }, @@ -1909,7 +1957,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 37, + funcId: 38, port: port_, ); }, @@ -1942,7 +1990,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 38, + funcId: 39, port: port_, ); }, @@ -1971,7 +2019,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 39, + funcId: 40, port: port_, ); }, @@ -2005,7 +2053,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 40, + funcId: 41, port: port_, ); }, @@ -2039,7 +2087,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 41, + funcId: 42, port: port_, ); }, @@ -2073,7 +2121,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 42, + funcId: 43, port: port_, ); }, @@ -2107,7 +2155,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 43, + funcId: 44, port: port_, ); }, @@ -2141,7 +2189,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 44, + funcId: 45, port: port_, ); }, @@ -2161,6 +2209,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ['accountPubkey', 'groupIds'], ); + @override + Future crateApiNotificationsGetPushRegistration({ + required String pubkey, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(pubkey, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 46, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_opt_box_autoadd_push_registration, + decodeErrorData: sse_decode_api_error, + ), + constMeta: kCrateApiNotificationsGetPushRegistrationConstMeta, + argValues: [pubkey], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiNotificationsGetPushRegistrationConstMeta => const TaskConstMeta( + debugName: 'get_push_registration', + argNames: ['pubkey'], + ); + @override Future crateApiGroupsGetRatchetTreeInfo({ required String accountPubkey, @@ -2175,7 +2255,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 45, + funcId: 47, port: port_, ); }, @@ -2209,7 +2289,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 46, + funcId: 48, port: port_, ); }, @@ -2243,7 +2323,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 47, + funcId: 49, port: port_, ); }, @@ -2277,7 +2357,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 48, + funcId: 50, port: port_, ); }, @@ -2307,7 +2387,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 49, + funcId: 51, port: port_, ); }, @@ -2341,7 +2421,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 50, + funcId: 52, port: port_, ); }, @@ -2375,7 +2455,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 51, + funcId: 53, port: port_, ); }, @@ -2409,7 +2489,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 52, + funcId: 54, port: port_, ); }, @@ -2443,7 +2523,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 53, + funcId: 55, port: port_, ); }, @@ -2482,7 +2562,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 54, + funcId: 56, port: port_, ); }, @@ -2509,7 +2589,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); sse_encode_String(npub, serializer); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 55)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 57)!; }, codec: SseCodec( decodeSuccessData: sse_decode_String, @@ -2539,7 +2619,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 56, + funcId: 58, port: port_, ); }, @@ -2573,7 +2653,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 57, + funcId: 59, port: port_, ); }, @@ -2599,7 +2679,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 58)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 60)!; }, codec: SseCodec( decodeSuccessData: @@ -2624,7 +2704,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 59)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 61)!; }, codec: SseCodec( decodeSuccessData: @@ -2649,7 +2729,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 60)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 62)!; }, codec: SseCodec( decodeSuccessData: @@ -2674,7 +2754,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 61)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 63)!; }, codec: SseCodec( decodeSuccessData: @@ -2699,7 +2779,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 62)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 64)!; }, codec: SseCodec( decodeSuccessData: @@ -2724,7 +2804,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 63)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 65)!; }, codec: SseCodec( decodeSuccessData: @@ -2749,7 +2829,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 64)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 66)!; }, codec: SseCodec( decodeSuccessData: @@ -2774,7 +2854,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 65)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 67)!; }, codec: SseCodec( decodeSuccessData: @@ -2803,7 +2883,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { language, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 66)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 68)!; }, codec: SseCodec( decodeSuccessData: sse_decode_String, @@ -2827,7 +2907,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 67)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 69)!; }, codec: SseCodec( decodeSuccessData: @@ -2860,7 +2940,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 68, + funcId: 70, port: port_, ); }, @@ -2890,7 +2970,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 69, + funcId: 71, port: port_, ); }, @@ -2922,7 +3002,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 70, + funcId: 72, port: port_, ); }, @@ -2980,7 +3060,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 71, + funcId: 73, port: port_, ); }, @@ -3028,7 +3108,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 72, + funcId: 74, port: port_, ); }, @@ -3061,7 +3141,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 73, + funcId: 75, port: port_, ); }, @@ -3093,7 +3173,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 74, + funcId: 76, port: port_, ); }, @@ -3127,7 +3207,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 75, + funcId: 77, port: port_, ); }, @@ -3157,7 +3237,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 76, + funcId: 78, port: port_, ); }, @@ -3191,7 +3271,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 77, + funcId: 79, port: port_, ); }, @@ -3227,7 +3307,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 78, + funcId: 80, port: port_, ); }, @@ -3254,7 +3334,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); sse_encode_String(hexPubkey, serializer); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 79)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 81)!; }, codec: SseCodec( decodeSuccessData: sse_decode_String, @@ -3284,7 +3364,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 80, + funcId: 82, port: port_, ); }, @@ -3341,7 +3421,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 81, + funcId: 83, port: port_, ); }, @@ -3384,7 +3464,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 82, + funcId: 84, port: port_, ); }, @@ -3414,7 +3494,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 83, + funcId: 85, port: port_, ); }, @@ -3444,7 +3524,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 84, + funcId: 86, port: port_, ); }, @@ -3475,7 +3555,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 85, + funcId: 87, port: port_, ); }, @@ -3515,7 +3595,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 86, + funcId: 88, port: port_, ); }, @@ -3551,7 +3631,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 87, + funcId: 89, port: port_, ); }, @@ -3587,7 +3667,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 88, + funcId: 90, port: port_, ); }, @@ -3627,7 +3707,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 89, + funcId: 91, port: port_, ); }, @@ -3668,7 +3748,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 90, + funcId: 92, port: port_, ); }, @@ -3724,7 +3804,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 91, + funcId: 93, port: port_, ); }, @@ -3787,7 +3867,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 92, + funcId: 94, port: port_, ); }, @@ -3823,7 +3903,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 93, + funcId: 95, port: port_, ); }, @@ -3856,7 +3936,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 94, + funcId: 96, port: port_, ); }, @@ -3891,7 +3971,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 95, + funcId: 97, port: port_, ); }, @@ -3928,7 +4008,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 96, + funcId: 98, port: port_, ); }, @@ -3967,7 +4047,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 97, + funcId: 99, port: port_, ); }, @@ -4001,7 +4081,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 98, + funcId: 100, port: port_, ); }, @@ -4038,7 +4118,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 99, + funcId: 101, port: port_, ); }, @@ -4075,7 +4155,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 100, + funcId: 102, port: port_, ); }, @@ -4107,7 +4187,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 101, + funcId: 103, port: port_, ); }, @@ -4137,7 +4217,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 102, + funcId: 104, )!; }, codec: SseCodec( @@ -4166,7 +4246,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 103, + funcId: 105, )!; }, codec: SseCodec( @@ -4195,7 +4275,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 104, + funcId: 106, )!; }, codec: SseCodec( @@ -4228,7 +4308,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 105, + funcId: 107, )!; }, codec: SseCodec( @@ -4261,7 +4341,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 106, + funcId: 108, port: port_, ); }, @@ -4295,7 +4375,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 107, + funcId: 109, port: port_, ); }, @@ -4329,7 +4409,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 108, + funcId: 110, port: port_, ); }, @@ -4363,7 +4443,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 109, + funcId: 111, port: port_, ); }, @@ -4396,7 +4476,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 110, + funcId: 112, port: port_, ); }, @@ -4430,7 +4510,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 111, + funcId: 113, port: port_, ); }, @@ -4463,7 +4543,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 112, + funcId: 114, port: port_, ); }, @@ -4501,7 +4581,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 113, + funcId: 115, port: port_, ); }, @@ -4537,7 +4617,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 114, + funcId: 116, port: port_, ); }, @@ -4575,7 +4655,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 115, + funcId: 117, port: port_, ); }, @@ -4595,6 +4675,52 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ['accountPubkey', 'groupId', 'filePath', 'serverUrl'], ); + @override + Future crateApiNotificationsUpsertPushRegistration({ + required String pubkey, + required PushPlatform platform, + required String rawToken, + required String serverPubkey, + String? relayHint, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(pubkey, serializer); + sse_encode_push_platform(platform, serializer); + sse_encode_String(rawToken, serializer); + sse_encode_String(serverPubkey, serializer); + sse_encode_opt_String(relayHint, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 118, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_push_registration, + decodeErrorData: sse_decode_api_error, + ), + constMeta: kCrateApiNotificationsUpsertPushRegistrationConstMeta, + argValues: [pubkey, platform, rawToken, serverPubkey, relayHint], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiNotificationsUpsertPushRegistrationConstMeta => const TaskConstMeta( + debugName: 'upsert_push_registration', + argNames: [ + 'pubkey', + 'platform', + 'rawToken', + 'serverPubkey', + 'relayHint', + ], + ); + @override Future crateApiUsersUserHasKeyPackage({ required String pubkey, @@ -4609,7 +4735,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 116, + funcId: 119, port: port_, ); }, @@ -4643,7 +4769,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 117, + funcId: 120, port: port_, ); }, @@ -4682,7 +4808,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 118, + funcId: 121, port: port_, ); }, @@ -4714,7 +4840,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 119, + funcId: 122, port: port_, ); }, @@ -5359,6 +5485,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return dco_decode_message_update(raw); } + @protected + PushRegistration dco_decode_box_autoadd_push_registration(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_push_registration(raw); + } + @protected int dco_decode_box_autoadd_u_32(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -6033,6 +6165,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw == null ? null : dco_decode_box_autoadd_i_64(raw); } + @protected + PushRegistration? dco_decode_opt_box_autoadd_push_registration(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_box_autoadd_push_registration(raw); + } + @protected int? dco_decode_opt_box_autoadd_u_32(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -6070,6 +6208,29 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw == null ? null : dco_decode_u_8_array_32(raw); } + @protected + PushPlatform dco_decode_push_platform(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return PushPlatform.values[raw as int]; + } + + @protected + PushRegistration dco_decode_push_registration(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 8) throw Exception('unexpected arr length: expect 8 but see ${arr.length}'); + return PushRegistration( + accountPubkey: dco_decode_String(arr[0]), + platform: dco_decode_push_platform(arr[1]), + rawToken: dco_decode_String(arr[2]), + serverPubkey: dco_decode_String(arr[3]), + relayHint: dco_decode_opt_String(arr[4]), + createdAt: dco_decode_Chrono_Utc(arr[5]), + updatedAt: dco_decode_Chrono_Utc(arr[6]), + lastSharedAt: dco_decode_opt_box_autoadd_Chrono_Utc(arr[7]), + ); + } + @protected RatchetTreeInfo dco_decode_ratchet_tree_info(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -6909,6 +7070,14 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return (sse_decode_message_update(deserializer)); } + @protected + PushRegistration sse_decode_box_autoadd_push_registration( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_push_registration(deserializer)); + } + @protected int sse_decode_box_autoadd_u_32(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -7897,6 +8066,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } + @protected + PushRegistration? sse_decode_opt_box_autoadd_push_registration( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_box_autoadd_push_registration(deserializer)); + } else { + return null; + } + } + @protected int? sse_decode_opt_box_autoadd_u_32(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -7957,6 +8139,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } + @protected + PushPlatform sse_decode_push_platform(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + final inner = sse_decode_i_32(deserializer); + return PushPlatform.values[inner]; + } + + @protected + PushRegistration sse_decode_push_registration(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + final var_accountPubkey = sse_decode_String(deserializer); + final var_platform = sse_decode_push_platform(deserializer); + final var_rawToken = sse_decode_String(deserializer); + final var_serverPubkey = sse_decode_String(deserializer); + final var_relayHint = sse_decode_opt_String(deserializer); + final var_createdAt = sse_decode_Chrono_Utc(deserializer); + final var_updatedAt = sse_decode_Chrono_Utc(deserializer); + final var_lastSharedAt = sse_decode_opt_box_autoadd_Chrono_Utc( + deserializer, + ); + return PushRegistration( + accountPubkey: var_accountPubkey, + platform: var_platform, + rawToken: var_rawToken, + serverPubkey: var_serverPubkey, + relayHint: var_relayHint, + createdAt: var_createdAt, + updatedAt: var_updatedAt, + lastSharedAt: var_lastSharedAt, + ); + } + @protected RatchetTreeInfo sse_decode_ratchet_tree_info(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -8902,6 +9116,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_message_update(self, serializer); } + @protected + void sse_encode_box_autoadd_push_registration( + PushRegistration self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_push_registration(self, serializer); + } + @protected void sse_encode_box_autoadd_u_32(int self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -9700,6 +9923,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } + @protected + void sse_encode_opt_box_autoadd_push_registration( + PushRegistration? self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + sse_encode_bool(self != null, serializer); + if (self != null) { + sse_encode_box_autoadd_push_registration(self, serializer); + } + } + @protected void sse_encode_opt_box_autoadd_u_32(int? self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -9760,6 +9996,28 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } + @protected + void sse_encode_push_platform(PushPlatform self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.index, serializer); + } + + @protected + void sse_encode_push_registration( + PushRegistration self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.accountPubkey, serializer); + sse_encode_push_platform(self.platform, serializer); + sse_encode_String(self.rawToken, serializer); + sse_encode_String(self.serverPubkey, serializer); + sse_encode_opt_String(self.relayHint, serializer); + sse_encode_Chrono_Utc(self.createdAt, serializer); + sse_encode_Chrono_Utc(self.updatedAt, serializer); + sse_encode_opt_box_autoadd_Chrono_Utc(self.lastSharedAt, serializer); + } + @protected void sse_encode_ratchet_tree_info( RatchetTreeInfo self, diff --git a/lib/src/rust/frb_generated.io.dart b/lib/src/rust/frb_generated.io.dart index d6d5885..05053a2 100644 --- a/lib/src/rust/frb_generated.io.dart +++ b/lib/src/rust/frb_generated.io.dart @@ -309,6 +309,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected MessageUpdate dco_decode_box_autoadd_message_update(dynamic raw); + @protected + PushRegistration dco_decode_box_autoadd_push_registration(dynamic raw); + @protected int dco_decode_box_autoadd_u_32(dynamic raw); @@ -526,6 +529,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected PlatformInt64? dco_decode_opt_box_autoadd_i_64(dynamic raw); + @protected + PushRegistration? dco_decode_opt_box_autoadd_push_registration(dynamic raw); + @protected int? dco_decode_opt_box_autoadd_u_32(dynamic raw); @@ -544,6 +550,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected U8Array32? dco_decode_opt_u_8_array_32(dynamic raw); + @protected + PushPlatform dco_decode_push_platform(dynamic raw); + + @protected + PushRegistration dco_decode_push_registration(dynamic raw); + @protected RatchetTreeInfo dco_decode_ratchet_tree_info(dynamic raw); @@ -874,6 +886,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + PushRegistration sse_decode_box_autoadd_push_registration( + SseDeserializer deserializer, + ); + @protected int sse_decode_box_autoadd_u_32(SseDeserializer deserializer); @@ -1137,6 +1154,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected PlatformInt64? sse_decode_opt_box_autoadd_i_64(SseDeserializer deserializer); + @protected + PushRegistration? sse_decode_opt_box_autoadd_push_registration( + SseDeserializer deserializer, + ); + @protected int? sse_decode_opt_box_autoadd_u_32(SseDeserializer deserializer); @@ -1155,6 +1177,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected U8Array32? sse_decode_opt_u_8_array_32(SseDeserializer deserializer); + @protected + PushPlatform sse_decode_push_platform(SseDeserializer deserializer); + + @protected + PushRegistration sse_decode_push_registration(SseDeserializer deserializer); + @protected RatchetTreeInfo sse_decode_ratchet_tree_info(SseDeserializer deserializer); @@ -1556,6 +1584,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_box_autoadd_push_registration( + PushRegistration self, + SseSerializer serializer, + ); + @protected void sse_encode_box_autoadd_u_32(int self, SseSerializer serializer); @@ -1889,6 +1923,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_opt_box_autoadd_push_registration( + PushRegistration? self, + SseSerializer serializer, + ); + @protected void sse_encode_opt_box_autoadd_u_32(int? self, SseSerializer serializer); @@ -1908,6 +1948,15 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_opt_u_8_array_32(U8Array32? self, SseSerializer serializer); + @protected + void sse_encode_push_platform(PushPlatform self, SseSerializer serializer); + + @protected + void sse_encode_push_registration( + PushRegistration self, + SseSerializer serializer, + ); + @protected void sse_encode_ratchet_tree_info( RatchetTreeInfo self, diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 33af5b6..d32d645 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -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", diff --git a/rust/Cargo.toml b/rust/Cargo.toml index b91c7cc..195faea 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -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", diff --git a/rust/src/api/notifications.rs b/rust/src/api/notifications.rs index 7852fc0..24022c6 100644 --- a/rust/src/api/notifications.rs +++ b/rust/src/api/notifications.rs @@ -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 for WhitenoisePushPlatform { + fn from(p: PushPlatform) -> Self { + match p { + PushPlatform::Apns => Self::Apns, + PushPlatform::Fcm => Self::Fcm, + } + } +} + +impl From 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, + pub created_at: DateTime, + pub updated_at: DateTime, + pub last_shared_at: Option>, +} + +impl From 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, 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, +) -> Result { + 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::*; diff --git a/rust/src/frb_generated.rs b/rust/src/frb_generated.rs index 6b4189f..6d83994 100644 --- a/rust/src/frb_generated.rs +++ b/rust/src/frb_generated.rs @@ -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::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 = ::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::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 = ::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::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 = ::sse_decode(&mut deserializer); + let api_platform = + ::sse_decode(&mut deserializer); + let api_raw_token = ::sse_decode(&mut deserializer); + let api_server_pubkey = ::sse_decode(&mut deserializer); + let api_relay_hint = >::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 { } } +impl SseDecode for Option { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + if (::sse_decode(deserializer)) { + return Some(::sse_decode( + deserializer, + )); + } else { + return None; + } + } +} + impl SseDecode for Option { // 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 = ::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 = ::sse_decode(deserializer); + let mut var_platform = ::sse_decode(deserializer); + let mut var_rawToken = ::sse_decode(deserializer); + let mut var_serverPubkey = ::sse_decode(deserializer); + let mut var_relayHint = >::sse_decode(deserializer); + let mut var_createdAt = >::sse_decode(deserializer); + let mut var_updatedAt = >::sse_decode(deserializer); + let mut var_lastSharedAt = + >>::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 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 + 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 + 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 { } } +impl SseEncode for Option { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.is_some(), serializer); + if let Some(value) = self { + ::sse_encode(value, serializer); + } + } +} + impl SseEncode for Option { // 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) { + ::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) { + ::sse_encode(self.account_pubkey, serializer); + ::sse_encode(self.platform, serializer); + ::sse_encode(self.raw_token, serializer); + ::sse_encode(self.server_pubkey, serializer); + >::sse_encode(self.relay_hint, serializer); + >::sse_encode(self.created_at, serializer); + >::sse_encode(self.updated_at, serializer); + >>::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) {