UNPKG

@vechain/connex-wallet-buddy

Version:

to bridge connex sign request to wallet

82 lines 5.24 kB
import { browser } from './browser'; // ref: https://github.com/ismailhabib/custom-protocol-detection function watchEvent(target, event, timeout) { return new Promise((resolve, reject) => { // eslint-disable-next-line prefer-const let cb; const timer = setTimeout(() => { target.removeEventListener(event, cb); reject(); }, timeout); cb = ev => { target.removeEventListener(event, cb); clearTimeout(timer); resolve(ev); }; target.addEventListener(event, cb); }); } const getHiddenIframe = (() => { let iframe = null; return () => { if (!iframe) { iframe = document.createElement("iframe"); iframe.style.display = "none"; document.body.appendChild(iframe); } return iframe; }; })(); function openWithHiddenFrame(uri, timeout) { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion getHiddenIframe().contentWindow.location.href = uri; return watchEvent(window, 'blur', timeout); } // function openWithTimeoutHack(uri: string, timeout: number) { // window.location.href = uri // return watchEvent(window, 'blur', timeout) // } // // no longer work after v64 // function openInFirefox(uri: string) { // try { // // eslint-disable-next-line @typescript-eslint/no-non-null-assertion // getHiddenIframe().contentWindow!.location.href = uri // return Promise.resolve() // } catch (e) { // // if (e.name == "NS_ERROR_UNKNOWN_PROTOCOL") { // return Promise.reject() // // } // } // } function openWithMsLaunchUri(uri) { return new Promise((resolve, reject) => { navigator.msLaunchUri(uri, resolve, reject); }); } /** * open custom protocol uri with installed native app * @param uri the custom protocol uri * @param timeout */ export function openUri(uri, timeout) { // eslint-disable-next-line no-extra-boolean-cast if (!!navigator.msLaunchUri) { //for IE and Edge in Win 8 and Win 10 return openWithMsLaunchUri(uri); } if (!browser) { return null; } // iOS is not supported if (browser.os === 'iOS') { return null; } switch (browser.name) { case 'chrome': case 'edge-chromium': case 'safari': return openWithHiddenFrame(uri, timeout); default: return null; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi11cmkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvb3Blbi11cmkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUVuQyxnRUFBZ0U7QUFFaEUsU0FBUyxVQUFVLENBQUMsTUFBYyxFQUFFLEtBQWEsRUFBRSxPQUFlO0lBQzlELE9BQU8sSUFBSSxPQUFPLENBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDMUMsd0NBQXdDO1FBQ3hDLElBQUksRUFBdUIsQ0FBQTtRQUMzQixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQzFCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDckMsTUFBTSxFQUFFLENBQUE7UUFDWixDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDWCxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7WUFDTixNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQ3JDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNuQixPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDZixDQUFDLENBQUE7UUFDRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3RDLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQztBQUVELE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBRyxFQUFFO0lBQzFCLElBQUksTUFBTSxHQUFHLElBQWdDLENBQUE7SUFDN0MsT0FBTyxHQUFHLEVBQUU7UUFDUixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDekMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFBO1lBQzdCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQ3BDO1FBQ0QsT0FBTyxNQUFNLENBQUE7SUFDakIsQ0FBQyxDQUFBO0FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtBQUVKLFNBQVMsbUJBQW1CLENBQUMsR0FBVyxFQUFFLE9BQWU7SUFDckQsb0VBQW9FO0lBQ3BFLGVBQWUsRUFBRSxDQUFDLGFBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNyRCxPQUFPLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQzlDLENBQUM7QUFFRCwrREFBK0Q7QUFDL0QsaUNBQWlDO0FBQ2pDLGlEQUFpRDtBQUNqRCxJQUFJO0FBRUosOEJBQThCO0FBQzlCLHdDQUF3QztBQUN4QyxZQUFZO0FBQ1osK0VBQStFO0FBQy9FLCtEQUErRDtBQUMvRCxtQ0FBbUM7QUFDbkMsb0JBQW9CO0FBQ3BCLDBEQUEwRDtBQUMxRCxrQ0FBa0M7QUFDbEMsZUFBZTtBQUNmLFFBQVE7QUFDUixJQUFJO0FBRUosU0FBUyxtQkFBbUIsQ0FBQyxHQUFXO0lBQ3BDLE9BQU8sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDekMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQ3JCLE9BQU8sRUFDUCxNQUFNLENBQ1QsQ0FBQTtJQUNMLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLEdBQVcsRUFBRSxPQUFlO0lBQ2hELGlEQUFpRDtJQUNqRCxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUscUNBQXFDO1FBQ2hFLE9BQU8sbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDbEM7SUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ1YsT0FBTyxJQUFJLENBQUE7S0FDZDtJQUVELHVCQUF1QjtJQUN2QixJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBSyxFQUFFO1FBQ3RCLE9BQU8sSUFBSSxDQUFBO0tBQ2Q7SUFFRCxRQUFRLE9BQU8sQ0FBQyxJQUFJLEVBQUU7UUFDbEIsS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLGVBQWUsQ0FBQztRQUNyQixLQUFLLFFBQVE7WUFDVCxPQUFPLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUM1QztZQUNJLE9BQU8sSUFBSSxDQUFBO0tBQ2xCO0FBQ0wsQ0FBQyJ9