UNPKG

copay-crown

Version:

A Secure Crown Wallet

58 lines (48 loc) 1.68 kB
import { Injectable } from '@angular/core'; import { Logger } from '../../providers/logger/logger'; // providers import { NodeWebkitProvider } from '../node-webkit/node-webkit'; import { PlatformProvider } from '../platform/platform'; import { PopupProvider } from '../popup/popup'; @Injectable() export class ExternalLinkProvider { constructor( private popupProvider: PopupProvider, private logger: Logger, private platformProvider: PlatformProvider, private nodeWebkitProvider: NodeWebkitProvider ) { this.logger.info('ExternalLinkProvider initialized.'); } private restoreHandleOpenURL(old: string): void { setTimeout(() => { (window as any).handleOpenURL = old; }, 500); } public open(url: string, optIn?: boolean, title?: string, message?: string, okText?: string, cancelText?: string): Promise<any> { return new Promise((resolve, reject) => { let old = (window as any).handleOpenURL; (window as any).handleOpenURL = (url) => { // Ignore external URLs this.logger.debug('Skip: ' + url); }; if (this.platformProvider.isNW) { this.nodeWebkitProvider.openExternalLink(url); this.restoreHandleOpenURL(old); } else { if (optIn) { let openBrowser = (res) => { if (res) window.open(url, '_system'); this.restoreHandleOpenURL(old); }; this.popupProvider.ionicConfirm(title, message, okText, cancelText).then((res: boolean) => { openBrowser(res); }); } else { window.open(url, '_system'); this.restoreHandleOpenURL(old); } } }); } }