@@ -15,6 +15,7 @@ Ext.define('Hamsket.ux.WebView',{
15
15
// private
16
16
, zoomLevel : 0
17
17
, currentUnreadCount : 0
18
+ , isReady : false
18
19
19
20
// CONFIG
20
21
, hideMode : 'offsets'
@@ -226,21 +227,8 @@ Ext.define('Hamsket.ux.WebView',{
226
227
console . info ( 'Start loading...' , me . src ) ;
227
228
if ( ! me . down ( 'statusbar' ) . closed || ! me . down ( 'statusbar' ) . keep ) me . down ( 'statusbar' ) . show ( ) ;
228
229
me . down ( 'statusbar' ) . showBusy ( ) ;
229
- me . getWebContents ( ) . session . webRequest . onBeforeSendHeaders (
230
- {
231
- urls : [
232
- 'https://accounts.google.com/' ,
233
- 'https://accounts.google.com/*'
234
- ]
235
- } ,
236
- ( details , callback ) => {
237
- details . requestHeaders [ 'User-Agent' ] =
238
- 'Mozilla/5.0 (X11; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0' ;
239
- callback ( { requestHeaders : details . requestHeaders } ) ;
240
- }
241
- ) ;
242
-
243
230
} ) ;
231
+
244
232
webview . addEventListener ( "did-stop-loading" , function ( ) {
245
233
me . down ( 'statusbar' ) . clearStatus ( { useDefaults : true } ) ;
246
234
if ( ! me . down ( 'statusbar' ) . keep ) me . down ( 'statusbar' ) . hide ( ) ;
@@ -293,6 +281,7 @@ Ext.define('Hamsket.ux.WebView',{
293
281
}
294
282
295
283
webview . addEventListener ( "dom-ready" , function ( e ) {
284
+ me . isReady = true ;
296
285
// Mute Webview
297
286
if ( me . record . get ( 'muted' ) || localStorage . getItem ( 'locked' ) || JSON . parse ( localStorage . getItem ( 'dontDisturb' ) ) ) me . setAudioMuted ( true , true ) ;
298
287
@@ -363,22 +352,26 @@ Ext.define('Hamsket.ux.WebView',{
363
352
364
353
// Scroll always to top (bug)
365
354
js_inject += '{document.body.scrollTop=0;}' ;
366
-
367
355
// Handles Certificate Errors
368
- me . getWebContents ( ) . on ( 'certificate-error' , function ( event , url , error , certificate , callback ) {
369
- if ( me . record . get ( 'trust' ) ) {
370
- event . preventDefault ( ) ;
371
- callback ( true ) ;
372
- } else {
373
- callback ( false ) ;
374
- }
375
-
356
+ me . getWebContents ( ) . then ( webContents => {
357
+ webContents . on ( 'certificate-error' , ( event , url , error , certificate , callback ) => {
358
+ if ( me . record . get ( 'trust' ) ) {
359
+ event . preventDefault ( ) ;
360
+ callback ( true ) ;
361
+ } else {
362
+ callback ( false ) ;
363
+ }
364
+ return webContents ;
365
+ } ) ;
376
366
me . down ( 'statusbar' ) . keep = true ;
377
367
me . down ( 'statusbar' ) . show ( ) ;
378
368
me . down ( 'statusbar' ) . setStatus ( {
379
369
text : '<i class="fa fa-exclamation-triangle" aria-hidden="true"></i> Certification Warning'
380
370
} ) ;
381
371
me . down ( 'statusbar' ) . down ( 'button' ) . show ( ) ;
372
+ return webContents ;
373
+ } ) . catch ( error => {
374
+ console . error ( error ) ;
382
375
} ) ;
383
376
384
377
webview . executeJavaScript ( js_inject ) ;
@@ -658,7 +651,10 @@ Ext.define('Hamsket.ux.WebView',{
658
651
}
659
652
, setZoomLevel ( level )
660
653
{
661
- this . getWebContents ( ) . zoomLevel = level ;
654
+ this . getWebContents ( ) . then ( webContents => {
655
+ webContents . zoomLevel = level ;
656
+ return webContents ;
657
+ } ) . catch ( error => console . log ( error ) ) ;
662
658
}
663
659
664
660
, zoomIn ( ) {
@@ -692,22 +688,26 @@ Ext.define('Hamsket.ux.WebView',{
692
688
}
693
689
694
690
, getWebView ( ) {
695
- if ( this . record . get ( 'enabled' ) ) {
696
- return this . down ( 'component' ) . el . dom ;
697
- } else {
698
- return false ;
699
- }
691
+ return this . record . get ( 'enabled' ) ? this . down ( 'component' ) . el . dom : false ;
700
692
}
701
693
, getWebContents ( ) {
702
- if ( this . record . get ( 'enabled' ) ) {
703
- const remote = require ( '@electron/remote' ) ;
694
+ const promise = new Promise ( ( resolve , reject ) => {
704
695
const webview = this . getWebView ( ) ;
705
- const id = webview . getWebContentsId ( ) ;
706
- const webContents = remote . webContents . fromId ( id ) ;
707
- return webContents ;
708
- } else {
709
- return false ;
710
- }
696
+ const webContents = ( ) => {
697
+ const remote = require ( '@electron/remote' ) ;
698
+ const id = webview . getWebContentsId ( ) ;
699
+ const webContents = remote . webContents . fromId ( id ) ;
700
+ return webContents ;
701
+ } ;
702
+ if ( this . record . get ( 'enabled' ) && this . isReady ) {
703
+ resolve ( webContents ( ) ) ;
704
+ } else {
705
+ webview . addEventListener ( "dom-ready" , ( ) => {
706
+ resolve ( webContents ( ) ) ;
707
+ } ) ;
708
+ }
709
+ } ) ;
710
+ return promise ;
711
711
}
712
712
, getUserAgent ( ) {
713
713
const me = this ;
@@ -739,8 +739,10 @@ Ext.define('Hamsket.ux.WebView',{
739
739
}
740
740
, updateUserAgent ( ) {
741
741
const me = this ;
742
- const webcontents = me . getWebContents ( ) ;
743
- webcontents . setUserAgent ( me . getUserAgent ( ) ) ;
742
+ me . getWebContents ( ) . then ( webContents => {
743
+ webContents . setUserAgent ( me . getUserAgent ( ) ) ;
744
+ return webContents ;
745
+ } ) . catch ( error => console . error ( error ) ) ;
744
746
}
745
747
, getOSArch ( platform ) {
746
748
const me = this ;
0 commit comments