@@ -6,31 +6,29 @@ if (!String.prototype.startsWith) {
66 }
77}
88
9- // makes the window.external.invoke API available after window.location.href changes
10- switch ( navigator . platform ) {
11- case "Macintosh" :
12- case "MacPPC" :
13- case "MacIntel" :
14- case "Mac68K" :
15- window . external = this
16- invoke = function ( x ) {
17- webkit . messageHandlers . invoke . postMessage ( x ) ;
18- }
19- break ;
20- case "Windows" :
21- case "WinCE" :
22- case "Win32" :
23- case "Win64" :
24- break ;
25- default :
26- window . external = this
27- invoke = function ( x ) {
28- window . webkit . messageHandlers . external . postMessage ( x ) ;
9+ ( function ( ) {
10+ function webviewBind ( name ) {
11+ var RPC = window . _rpc = ( window . _rpc || { nextSeq : 1 } ) ;
12+ window [ name ] = function ( ) {
13+ var seq = RPC . nextSeq ++ ;
14+ var promise = new Promise ( function ( resolve , reject ) {
15+ RPC [ seq ] = {
16+ resolve : resolve ,
17+ reject : reject ,
18+ } ;
19+ } ) ;
20+ window . external . invoke ( JSON . stringify ( {
21+ id : seq ,
22+ method : name ,
23+ params : Array . prototype . slice . call ( arguments ) ,
24+ } ) ) ;
25+ return promise ;
2926 }
30- break ;
31- }
27+ }
28+ if ( ! window . __TAURI_INVOKE_HANDLER__ ) {
29+ webviewBind ( '__TAURI_INVOKE_HANDLER__' )
30+ }
3231
33- ( function ( ) {
3432 function s4 ( ) {
3533 return Math . floor ( ( 1 + Math . random ( ) ) * 0x10000 )
3634 . toString ( 16 )
@@ -89,9 +87,6 @@ switch (navigator.platform) {
8987 if ( ! window . __TAURI__ ) {
9088 window . __TAURI__ = { }
9189 }
92- window . __TAURI__ . invoke = function invoke ( args ) {
93- window . external . invoke ( JSON . stringify ( args ) )
94- }
9590
9691 window . __TAURI__ . transformCallback = function transformCallback ( callback ) {
9792 var once = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : false
@@ -109,10 +104,10 @@ switch (navigator.platform) {
109104 }
110105
111106 window . __TAURI__ . promisified = function promisified ( args ) {
112- var _this = this ;
107+ var _this = this
113108
114109 return new Promise ( function ( resolve , reject ) {
115- _this . invoke ( _objectSpread ( {
110+ window . __TAURI_INVOKE_HANDLER__ ( _objectSpread ( {
116111 callback : _this . transformCallback ( resolve ) ,
117112 error : _this . transformCallback ( reject )
118113 } , args ) )
@@ -127,19 +122,6 @@ switch (navigator.platform) {
127122 } )
128123 }
129124
130- // init tauri API
131- try {
132- window . __TAURI__ . invoke ( {
133- cmd : 'init'
134- } )
135- } catch ( e ) {
136- window . addEventListener ( 'DOMContentLoaded' , function ( ) {
137- window . __TAURI__ . invoke ( {
138- cmd : 'init'
139- } )
140- } , true )
141- }
142-
143125 document . addEventListener ( 'error' , function ( e ) {
144126 var target = e . target
145127 while ( target != null ) {
@@ -161,7 +143,7 @@ switch (navigator.platform) {
161143 while ( target != null ) {
162144 if ( target . matches ? target . matches ( 'a' ) : target . msMatchesSelector ( 'a' ) ) {
163145 if ( target . href && target . href . startsWith ( 'http' ) && target . target === '_blank' ) {
164- window . __TAURI__ . invoke ( {
146+ window . __TAURI_INVOKE_HANDLER__ ( {
165147 cmd : 'open' ,
166148 uri : target . href
167149 } )
0 commit comments