forked from CIT/Vmeda.Online
		
	MOBILE-2431 sso: Make SSO work in Inappbrowser v3
This commit is contained in:
		
							parent
							
								
									bfd4dd8ac7
								
							
						
					
					
						commit
						28e3313a7c
					
				| @ -104,7 +104,7 @@ | ||||
|     </plugin> | ||||
|     <plugin name="cordova-plugin-device" spec="1.1.6" /> | ||||
|     <plugin name="cordova-plugin-globalization" spec="1.0.7" /> | ||||
|     <plugin name="cordova-plugin-inappbrowser" spec="1.7.1" /> | ||||
|     <plugin name="cordova-plugin-inappbrowser" spec="^3.0.0" /> | ||||
|     <plugin name="cordova-plugin-network-information" spec="1.3.3" /> | ||||
|     <plugin name="cordova-plugin-statusbar" spec="2.2.3" /> | ||||
|     <plugin name="cordova-plugin-whitelist" spec="1.3.2" /> | ||||
|  | ||||
| @ -756,17 +756,41 @@ export class CoreUtilsProvider { | ||||
|         this.iabInstance = this.iab.create(url, '_blank', options); | ||||
| 
 | ||||
|         if (this.appProvider.isDesktop() || this.appProvider.isMobile()) { | ||||
|             let loadStopSubscription; | ||||
|             const loadStartUrls = []; | ||||
| 
 | ||||
|             // Trigger global events when a url is loaded or the window is closed. This is to make it work like in Ionic 1.
 | ||||
|             const loadStartSubscription = this.iabInstance.on('loadstart').subscribe((event) => { | ||||
|                 // Execute the callback in the Angular zone, so change detection doesn't stop working.
 | ||||
|                 this.zone.run(() => { | ||||
|                     // Store the last loaded URLs (max 10).
 | ||||
|                     loadStartUrls.push(event.url); | ||||
|                     if (loadStartUrls.length > 10) { | ||||
|                         loadStartUrls.shift(); | ||||
|                     } | ||||
| 
 | ||||
|                     this.eventsProvider.trigger(CoreEventsProvider.IAB_LOAD_START, event); | ||||
|                 }); | ||||
|             }); | ||||
| 
 | ||||
|             if (this.platform.is('android')) { | ||||
|                 // Load stop is needed with InAppBrowser v3. Custom URL schemes no longer trigger load start, simulate it.
 | ||||
|                 loadStopSubscription = this.iabInstance.on('loadstop').subscribe((event) => { | ||||
|                     // Execute the callback in the Angular zone, so change detection doesn't stop working.
 | ||||
|                     this.zone.run(() => { | ||||
|                         if (loadStartUrls.indexOf(event.url) == -1) { | ||||
|                             // The URL was stopped but not started, probably a custom URL scheme.
 | ||||
|                             this.eventsProvider.trigger(CoreEventsProvider.IAB_LOAD_START, event); | ||||
|                         } | ||||
|                     }); | ||||
|                 }); | ||||
|             } | ||||
| 
 | ||||
|             const exitSubscription = this.iabInstance.on('exit').subscribe((event) => { | ||||
|                 // Execute the callback in the Angular zone, so change detection doesn't stop working.
 | ||||
|                 this.zone.run(() => { | ||||
|                     loadStartSubscription.unsubscribe(); | ||||
|                     loadStopSubscription && loadStopSubscription.unsubscribe(); | ||||
|                     exitSubscription.unsubscribe(); | ||||
|                     this.eventsProvider.trigger(CoreEventsProvider.IAB_EXIT, event); | ||||
|                 }); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user