@@ -270,6 +270,23 @@ pub struct ProposeSession {
270
270
pub pairing_topic : Topic ,
271
271
pub session_proposal : Arc < str > ,
272
272
pub attestation : Option < Arc < str > > ,
273
+
274
+ #[ serde( default , flatten, skip_serializing_if = "is_default" ) ]
275
+ pub analytics : Option < AnalyticsData > ,
276
+ }
277
+
278
+ impl ProposeSession {
279
+ pub fn to_session_proposal ( & self ) -> Publish {
280
+ Publish {
281
+ topic : self . pairing_topic . clone ( ) ,
282
+ message : self . session_proposal . clone ( ) ,
283
+ attestation : self . attestation . clone ( ) ,
284
+ prompt : true ,
285
+ tag : 1100 ,
286
+ ttl_secs : 300 ,
287
+ analytics : self . analytics . clone ( ) ,
288
+ }
289
+ }
273
290
}
274
291
275
292
impl ServiceRequest for ProposeSession {
@@ -311,8 +328,39 @@ pub enum ApproveSessionError {
311
328
pub struct ApproveSession {
312
329
pub pairing_topic : Topic ,
313
330
pub session_topic : Topic ,
314
- pub pairing_response : Arc < str > ,
331
+
332
+ #[ serde( alias = "pairing_response" ) ]
333
+ pub session_proposal_response : Arc < str > ,
315
334
pub session_settlement_request : Arc < str > ,
335
+
336
+ #[ serde( default , flatten, skip_serializing_if = "is_default" ) ]
337
+ pub analytics : Option < AnalyticsData > ,
338
+ }
339
+
340
+ impl ApproveSession {
341
+ pub fn to_session_proposal_response ( & self ) -> Publish {
342
+ Publish {
343
+ topic : self . pairing_topic . clone ( ) ,
344
+ message : self . session_proposal_response . clone ( ) ,
345
+ attestation : None ,
346
+ prompt : false ,
347
+ tag : 1101 ,
348
+ ttl_secs : 300 ,
349
+ analytics : self . analytics . clone ( ) ,
350
+ }
351
+ }
352
+
353
+ pub fn to_session_settlement_request ( & self ) -> Publish {
354
+ Publish {
355
+ topic : self . session_topic . clone ( ) ,
356
+ message : self . session_settlement_request . clone ( ) ,
357
+ attestation : None ,
358
+ prompt : false ,
359
+ tag : 1102 ,
360
+ ttl_secs : 300 ,
361
+ analytics : self . analytics . clone ( ) ,
362
+ }
363
+ }
316
364
}
317
365
318
366
impl ServiceRequest for ApproveSession {
@@ -328,7 +376,7 @@ impl ServiceRequest for ApproveSession {
328
376
. decode ( )
329
377
. map_err ( |_| PayloadError :: InvalidTopic ) ?;
330
378
331
- if self . pairing_response . is_empty ( ) || self . session_settlement_request . is_empty ( ) {
379
+ if self . session_proposal_response . is_empty ( ) || self . session_settlement_request . is_empty ( ) {
332
380
Err ( PayloadError :: InvalidParams )
333
381
} else {
334
382
Ok ( ( ) )
@@ -645,13 +693,22 @@ impl ServiceRequest for BatchReceiveMessages {
645
693
}
646
694
}
647
695
648
- #[ derive( Debug , Clone , PartialEq , Eq , Hash , Serialize , Deserialize ) ]
696
+ #[ derive( Debug , Default , Clone , PartialEq , Eq , Hash , Serialize , Deserialize ) ]
649
697
#[ serde( rename_all = "camelCase" ) ]
650
698
pub struct AnalyticsData {
699
+ #[ serde( default , skip_serializing_if = "is_default" ) ]
651
700
pub correlation_id : Option < i64 > ,
701
+
702
+ #[ serde( default , skip_serializing_if = "is_default" ) ]
652
703
pub chain_id : Option < Arc < str > > ,
704
+
705
+ #[ serde( default , skip_serializing_if = "is_default" ) ]
653
706
pub rpc_methods : Option < Vec < Arc < str > > > ,
707
+
708
+ #[ serde( default , skip_serializing_if = "is_default" ) ]
654
709
pub tx_hashes : Option < Vec < Arc < str > > > ,
710
+
711
+ #[ serde( default , skip_serializing_if = "is_default" ) ]
655
712
pub contract_addresses : Option < Vec < Arc < str > > > ,
656
713
}
657
714
@@ -1014,9 +1071,12 @@ impl Request {
1014
1071
}
1015
1072
}
1016
1073
1017
- pub fn strip_analytics ( & mut self ) {
1018
- if let Params :: Publish ( params) = & mut self . params {
1019
- params. analytics = None ;
1074
+ pub fn strip_analytics ( & mut self ) -> Option < AnalyticsData > {
1075
+ match & mut self . params {
1076
+ Params :: Publish ( params) => params. analytics . take ( ) ,
1077
+ Params :: ProposeSession ( params) => params. analytics . take ( ) ,
1078
+ Params :: ApproveSession ( params) => params. analytics . take ( ) ,
1079
+ _ => None ,
1020
1080
}
1021
1081
}
1022
1082
}
0 commit comments