@@ -29,22 +29,19 @@ interface JSBridge {
2929 * Class Bridge class that connect JavaScript runtime to Swift if page is rendered in WKWebView<br>
3030 * Under the hood uses [WebViewJavascriptBridge](https://github.com/marcuswestin/WebViewJavascriptBridge)
3131 */
32- @Injectable ( {
33- providedIn : 'root'
34- } )
35- export class BridgeService {
36- public static bridgeLoadTimeout = 10000
37- public static bridgeLoadPromise : Promise < JSBridge > = null
32+ export class Bridge {
33+ public static loadTimeout = 10000
34+ public static loadPromise : Promise < JSBridge > = null
3835 private static didSpeedUp = false
3936 private static readonly handlers : {
4037 [ event : string ] : EventHandler [ ]
4138 } = { }
4239
43- public get bridge ( ) {
44- if ( BridgeService . bridgeLoadPromise ) {
45- return BridgeService . bridgeLoadPromise
40+ public static get bridge ( ) {
41+ if ( Bridge . loadPromise ) {
42+ return Bridge . loadPromise
4643 }
47- BridgeService . bridgeLoadPromise = new Promise ( async ( resolve , reject ) => {
44+ Bridge . loadPromise = new Promise ( async ( resolve , reject ) => {
4845 const bridgeKey = 'WebViewJavascriptBridge'
4946 if ( window [ bridgeKey ] ) {
5047 return resolve ( window [ bridgeKey ] )
@@ -64,17 +61,17 @@ export class BridgeService {
6461
6562 setTimeout ( ( ) => {
6663 reject ( new Error ( 'Bridge loading timed out' ) )
67- } , BridgeService . bridgeLoadTimeout )
64+ } , Bridge . loadTimeout )
6865 } )
6966
70- return BridgeService . bridgeLoadPromise
67+ return Bridge . loadPromise
7168 }
7269
73- async call ( handler : string , data ?: JSONData ) : Promise < any > {
70+ static async call ( handler : string , data ?: JSONData ) : Promise < any > {
7471 return new Promise ( async ( resolve , reject ) => {
7572 const bridge = await this . bridge
76- if ( ! BridgeService . didSpeedUp ) {
77- BridgeService . didSpeedUp = true
73+ if ( ! Bridge . didSpeedUp ) {
74+ Bridge . didSpeedUp = true
7875 bridge . disableJavscriptAlertBoxSafetyTimeout ( )
7976 }
8077 bridge . callHandler ( handler , data , res => {
@@ -84,15 +81,15 @@ export class BridgeService {
8481 } )
8582 }
8683
87- async on ( event : string , handler : EventHandler ) {
84+ static async on ( event : string , handler : EventHandler ) {
8885 const bridge = await this . bridge
8986 let shouldRegister = false
90- if ( ! ( event in BridgeService . handlers ) ) {
91- BridgeService . handlers [ event ] = [ ]
87+ if ( ! ( event in Bridge . handlers ) ) {
88+ Bridge . handlers [ event ] = [ ]
9289 shouldRegister = true
9390 }
9491
95- BridgeService . handlers [ event ] . push ( handler )
92+ Bridge . handlers [ event ] . push ( handler )
9693
9794 if ( shouldRegister ) {
9895 bridge . registerHandler ( event , async ( data , cb ) => {
@@ -102,7 +99,7 @@ export class BridgeService {
10299 cb ( { error : err . toString ( ) } )
103100 }
104101
105- for ( const handler of BridgeService . handlers [ event ] ) {
102+ for ( const handler of Bridge . handlers [ event ] ) {
106103 try {
107104 await handler ( data , {
108105 send : ( data ) => cb ( { data } ) ,
@@ -116,14 +113,14 @@ export class BridgeService {
116113 }
117114 }
118115
119- async off ( event : string , handler : EventHandler ) {
120- if ( ! BridgeService . handlers [ event ] ?. length ) {
116+ static async off ( event : string , handler : EventHandler ) {
117+ if ( ! Bridge . handlers [ event ] ?. length ) {
121118 console . error ( `Trying to unsubscribe from event: "${ event } " when there are no handlers registered` )
122119 return
123120 }
124- const index = BridgeService . handlers [ event ] ?. indexOf ( handler )
121+ const index = Bridge . handlers [ event ] ?. indexOf ( handler )
125122 if ( index > - 1 ) {
126- BridgeService . handlers [ event ] . splice ( index , 1 )
123+ Bridge . handlers [ event ] . splice ( index , 1 )
127124 } else {
128125 console . error ( `Trying to unsubscribe from event: "${ event } " with a handler that is not registered` )
129126 }
0 commit comments