@@ -210,6 +210,7 @@ pub use self::utils::TitleBarStyle;
210
210
211
211
use self :: event:: EventName ;
212
212
pub use self :: event:: { Event , EventId , EventTarget } ;
213
+ use self :: manager:: EmitPayload ;
213
214
pub use {
214
215
self :: app:: {
215
216
App , AppHandle , AssetResolver , Builder , CloseRequestApi , RunEvent , UriSchemeContext ,
@@ -940,7 +941,15 @@ pub trait Emitter<R: Runtime>: sealed::ManagerBase<R> {
940
941
/// ```
941
942
fn emit < S : Serialize + Clone > ( & self , event : & str , payload : S ) -> Result < ( ) > {
942
943
let event = EventName :: new ( event) ?;
943
- self . manager ( ) . emit ( event, & payload)
944
+ let payload = EmitPayload :: Serialize ( & payload) ;
945
+ self . manager ( ) . emit ( event, payload)
946
+ }
947
+
948
+ /// Similar to [`Emitter::emit`] but the payload is json serialized.
949
+ fn emit_str ( & self , event : & str , payload : String ) -> Result < ( ) > {
950
+ let event = EventName :: new ( event) ?;
951
+ let payload = EmitPayload :: < ( ) > :: Str ( payload) ;
952
+ self . manager ( ) . emit ( event, payload)
944
953
}
945
954
946
955
/// Emits an event to all [targets](EventTarget) matching the given target.
@@ -971,7 +980,18 @@ pub trait Emitter<R: Runtime>: sealed::ManagerBase<R> {
971
980
S : Serialize + Clone ,
972
981
{
973
982
let event = EventName :: new ( event) ?;
974
- self . manager ( ) . emit_to ( target, event, & payload)
983
+ let payload = EmitPayload :: Serialize ( & payload) ;
984
+ self . manager ( ) . emit_to ( target, event, payload)
985
+ }
986
+
987
+ /// Similar to [`Emitter::emit_to`] but the payload is json serialized.
988
+ fn emit_str_to < I > ( & self , target : I , event : & str , payload : String ) -> Result < ( ) >
989
+ where
990
+ I : Into < EventTarget > ,
991
+ {
992
+ let event = EventName :: new ( event) ?;
993
+ let payload = EmitPayload :: < ( ) > :: Str ( payload) ;
994
+ self . manager ( ) . emit_to ( target, event, payload)
975
995
}
976
996
977
997
/// Emits an event to all [targets](EventTarget) based on the given filter.
@@ -998,7 +1018,18 @@ pub trait Emitter<R: Runtime>: sealed::ManagerBase<R> {
998
1018
F : Fn ( & EventTarget ) -> bool ,
999
1019
{
1000
1020
let event = EventName :: new ( event) ?;
1001
- self . manager ( ) . emit_filter ( event, & payload, filter)
1021
+ let payload = EmitPayload :: Serialize ( & payload) ;
1022
+ self . manager ( ) . emit_filter ( event, payload, filter)
1023
+ }
1024
+
1025
+ /// Similar to [`Emitter::emit_filter`] but the payload is json serialized.
1026
+ fn emit_str_filter < F > ( & self , event : & str , payload : String , filter : F ) -> Result < ( ) >
1027
+ where
1028
+ F : Fn ( & EventTarget ) -> bool ,
1029
+ {
1030
+ let event = EventName :: new ( event) ?;
1031
+ let payload = EmitPayload :: < ( ) > :: Str ( payload) ;
1032
+ self . manager ( ) . emit_filter ( event, payload, filter)
1002
1033
}
1003
1034
}
1004
1035
0 commit comments