@@ -18,7 +18,6 @@ export const enum ChannelEventType {
1818 CREATE = 1 ,
1919 CREATE_CALLBACK ,
2020 DESTROY ,
21- INIT_DATA ,
2221
2322 ON_WINDOW_RESIZE ,
2423 ON_WINDOW_RESIZE_CALLBACK ,
@@ -110,9 +109,7 @@ export const enum ChannelEventType {
110109 PERFORMANCE_END_TRACE ,
111110 PERFORMANCE_STATS_CALLBACK ,
112111
113- SET_WXS_LISTENER_STATS ,
114- CALL_WXS_PROP_CHANGE_LISTENER ,
115- ON_WXS_CALL_METHOD ,
112+ CUSTOM_METHOD ,
116113}
117114
118115export type ChannelEventTypeViewSide =
@@ -138,17 +135,18 @@ export type ChannelEventTypeViewSide =
138135 | ChannelEventType . ON_EVENT
139136 | ChannelEventType . ON_RELEASE_EVENT
140137 | ChannelEventType . PERFORMANCE_STATS_CALLBACK
141- | ChannelEventType . ON_WXS_CALL_METHOD
138+ | ChannelEventType . CUSTOM_METHOD
142139
143- export type ChannelEventTypeDataSide = Exclude < ChannelEventType , ChannelEventTypeViewSide >
140+ export type ChannelEventTypeDataSide =
141+ | Exclude < ChannelEventType , ChannelEventTypeViewSide >
142+ | ChannelEventType . CUSTOM_METHOD
144143
145144type ExhaustiveChannelEvent < T extends Record < ChannelEventType , any > > = T
146145
147146export type ChannelArgs = ExhaustiveChannelEvent < {
148147 [ ChannelEventType . CREATE ] : [ number ]
149148 [ ChannelEventType . CREATE_CALLBACK ] : [ number , number , number , number , string ]
150149 [ ChannelEventType . DESTROY ] : [ ]
151- [ ChannelEventType . INIT_DATA ] : [ string ]
152150
153151 [ ChannelEventType . ON_WINDOW_RESIZE ] : [ number ]
154152 [ ChannelEventType . ON_WINDOW_RESIZE_CALLBACK ] : [ number , number , number , number ]
@@ -261,16 +259,7 @@ export type ChannelArgs = ExhaustiveChannelEvent<{
261259 [ ChannelEventType . START_OVERLAY_INSPECT_CALLBACK ] : [ number , string , number | null ]
262260 [ ChannelEventType . STOP_OVERLAY_INSPECT ] : [ ]
263261
264- [ ChannelEventType . SET_WXS_LISTENER_STATS ] : [
265- number ,
266- string ,
267- boolean ,
268- boolean ,
269- boolean ,
270- ( string | number ) [ ] ,
271- ]
272- [ ChannelEventType . CALL_WXS_PROP_CHANGE_LISTENER ] : [ number , unknown , unknown , ( string | number ) [ ] ]
273- [ ChannelEventType . ON_WXS_CALL_METHOD ] : [ number , string , string ]
262+ [ ChannelEventType . CUSTOM_METHOD ] : [ number | null , unknown ]
274263} >
275264
276265export type Channel = ReturnType < typeof MessageChannelDataSide >
@@ -317,8 +306,7 @@ export const MessageChannelDataSide = (
317306 ) => void )
318307 | null = null
319308
320- let handleWXSCallMethod : ( ( elementId : number , method : string , args : unknown [ ] ) => void ) | null =
321- null
309+ let handleCustomMethod : ( ( elementId : number | null , options : any ) => void ) | null = null
322310 let overlayInspectCallbackId : number | null = null
323311
324312 const callback2id = ( cb : ( ...args : any [ ] ) => void ) => {
@@ -472,9 +460,9 @@ export const MessageChannelDataSide = (
472460 } )
473461 break
474462 }
475- case ChannelEventType . ON_WXS_CALL_METHOD : {
476- const [ , elementId , method , args ] = arg
477- handleWXSCallMethod ! ( elementId , method , JSON . parse ( args ) as unknown [ ] )
463+ case ChannelEventType . CUSTOM_METHOD : {
464+ const [ , elementId , options ] = arg
465+ handleCustomMethod ?. ( elementId , options )
478466 break
479467 }
480468 default :
@@ -491,7 +479,6 @@ export const MessageChannelDataSide = (
491479 } ) => void ,
492480 ) => publish ( [ ChannelEventType . CREATE , callback2id ( init ) ] ) ,
493481 destroy : ( ) => publish ( [ ChannelEventType . DESTROY ] ) ,
494- initData : ( initData : Record < string , unknown > ) => publish ( [ ChannelEventType . INIT_DATA , JSON . stringify ( initData ) ] ) ,
495482
496483 onWindowResize : (
497484 cb : ( res : { width : number ; height : number ; devicePixelRatio : number } ) => void ,
@@ -632,11 +619,10 @@ export const MessageChannelDataSide = (
632619 performanceStartTrace : ( index : number ) => publish ( [ ChannelEventType . PERFORMANCE_START_TRACE , index ] ) ,
633620 performanceEndTrace : ( id : number , cb : ( stats : { startTimestamp : number ; endTimestamp : number } ) => void , ) => publish ( [ ChannelEventType . PERFORMANCE_END_TRACE , id , callback2id ( cb ) ] ) ,
634621
635- setWXSListenerStats : ( elementId : number , eventName : string , final : boolean , mutated : boolean , capture : boolean , lvaluePath : ( string | number ) [ ] ) => publish ( [ ChannelEventType . SET_WXS_LISTENER_STATS , elementId , eventName , final , mutated , capture , lvaluePath ] ) ,
636- callWXSPropChangeListener : ( elementId : number , newValue : any , oldValue : any , lvaluePath : ( string | number ) [ ] ) => publish ( [ ChannelEventType . CALL_WXS_PROP_CHANGE_LISTENER , elementId , newValue , oldValue , lvaluePath ] ) ,
637- onWXSCallMethod : ( handler : ( elementId : number , method : string , args : unknown [ ] ) => void ) => {
638- handleWXSCallMethod = handler
639- } ,
622+ callCustomMethod : ( elementId : number | null , options : any ) => publish ( [ ChannelEventType . CUSTOM_METHOD , elementId , options ] ) ,
623+ onCustenMethod : ( handler : ( elementId : number | null , options : any ) => void ) => {
624+ handleCustomMethod = handler
625+ }
640626 }
641627}
642628
@@ -721,12 +707,12 @@ export const MessageChannelViewSide = (
721707 }
722708 }
723709
724- const wxsCallMethodHandler = ( elem : Element , method : string , args : any [ ] ) => {
725- const elemId = getNodeId ( elem ) !
726- publish ( [ ChannelEventType . ON_WXS_CALL_METHOD , elemId , method , JSON . stringify ( args ) ] )
710+ const sendCustomMethodHandler = ( elem : Element | null , options : any ) => {
711+ const elemId = elem ? getNodeId ( elem ) ! : null
712+ publish ( [ ChannelEventType . CUSTOM_METHOD , elemId , options ] )
727713 }
728714
729- controller . setWXSCallMethodHandler ( wxsCallMethodHandler )
715+ controller . onCustomMethod ( sendCustomMethodHandler )
730716
731717 // eslint-disable-next-line consistent-return
732718 subscribe ( ( arg ) => {
@@ -748,11 +734,6 @@ export const MessageChannelViewSide = (
748734 case ChannelEventType . DESTROY :
749735 controller . destroy ( )
750736 break
751- case ChannelEventType . INIT_DATA : {
752- const [ , initData ] = arg
753- controller . initData ( JSON . parse ( initData ) )
754- break
755- }
756737 case ChannelEventType . ON_WINDOW_RESIZE : {
757738 const [ , callbackId ] = arg
758739 controller . onWindowResize ( ( { width, height, devicePixelRatio } ) => {
@@ -1246,24 +1227,10 @@ export const MessageChannelViewSide = (
12461227 } )
12471228 break
12481229 }
1249- case ChannelEventType . SET_WXS_LISTENER_STATS : {
1250- const [ , elementId , eventName , final , mutated , capture , lvaluePath ] = arg
1251- const element = nodeMap [ elementId ] ! as Element
1252- controller . setWXSListenerStats (
1253- element ,
1254- eventName ,
1255- final ,
1256- mutated ,
1257- capture ,
1258- lvaluePath ,
1259- eventHandler ,
1260- )
1261- break
1262- }
1263- case ChannelEventType . CALL_WXS_PROP_CHANGE_LISTENER : {
1264- const [ , elementId , newValue , oldValue , lvaluepath ] = arg
1265- const element = nodeMap [ elementId ] ! as Element
1266- controller . callWXSPropChangeListener ( element , newValue , oldValue , lvaluepath )
1230+ case ChannelEventType . CUSTOM_METHOD : {
1231+ const [ , elementId , options ] = arg
1232+ const element = elementId ? ( nodeMap [ elementId ] ! as Element ) : null
1233+ controller . handleCustomMethod ( element , options )
12671234 break
12681235 }
12691236 default :
0 commit comments