UNPKG

@vechain/connex-wallet-buddy

Version:

to bridge connex sign request to wallet

86 lines 5.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.openUri = void 0; const browser_1 = require("./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 */ 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_1.browser) { return null; } // iOS is not supported if (browser_1.browser.os === 'iOS') { return null; } switch (browser_1.browser.name) { case 'chrome': case 'edge-chromium': case 'safari': return openWithHiddenFrame(uri, timeout); default: return null; } } exports.openUri = openUri; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi11cmkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvb3Blbi11cmkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQW1DO0FBRW5DLGdFQUFnRTtBQUVoRSxTQUFTLFVBQVUsQ0FBQyxNQUFjLEVBQUUsS0FBYSxFQUFFLE9BQWU7SUFDOUQsT0FBTyxJQUFJLE9BQU8sQ0FBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUMxQyx3Q0FBd0M7UUFDeEMsSUFBSSxFQUF1QixDQUFBO1FBQzNCLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDMUIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUNyQyxNQUFNLEVBQUUsQ0FBQTtRQUNaLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNYLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtZQUNOLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDckMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ25CLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNmLENBQUMsQ0FBQTtRQUNELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDdEMsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFHLEVBQUU7SUFDMUIsSUFBSSxNQUFNLEdBQUcsSUFBZ0MsQ0FBQTtJQUM3QyxPQUFPLEdBQUcsRUFBRTtRQUNSLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUN6QyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUE7WUFDN0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUE7U0FDcEM7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNqQixDQUFDLENBQUE7QUFDTCxDQUFDLENBQUMsRUFBRSxDQUFBO0FBRUosU0FBUyxtQkFBbUIsQ0FBQyxHQUFXLEVBQUUsT0FBZTtJQUNyRCxvRUFBb0U7SUFDcEUsZUFBZSxFQUFFLENBQUMsYUFBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ3JELE9BQU8sVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDOUMsQ0FBQztBQUVELCtEQUErRDtBQUMvRCxpQ0FBaUM7QUFDakMsaURBQWlEO0FBQ2pELElBQUk7QUFFSiw4QkFBOEI7QUFDOUIsd0NBQXdDO0FBQ3hDLFlBQVk7QUFDWiwrRUFBK0U7QUFDL0UsK0RBQStEO0FBQy9ELG1DQUFtQztBQUNuQyxvQkFBb0I7QUFDcEIsMERBQTBEO0FBQzFELGtDQUFrQztBQUNsQyxlQUFlO0FBQ2YsUUFBUTtBQUNSLElBQUk7QUFFSixTQUFTLG1CQUFtQixDQUFDLEdBQVc7SUFDcEMsT0FBTyxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUN6QyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFDckIsT0FBTyxFQUNQLE1BQU0sQ0FDVCxDQUFBO0lBQ0wsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxHQUFXLEVBQUUsT0FBZTtJQUNoRCxpREFBaUQ7SUFDakQsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLHFDQUFxQztRQUNoRSxPQUFPLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFBO0tBQ2xDO0lBRUQsSUFBSSxDQUFDLGlCQUFPLEVBQUU7UUFDVixPQUFPLElBQUksQ0FBQTtLQUNkO0lBRUQsdUJBQXVCO0lBQ3ZCLElBQUksaUJBQU8sQ0FBQyxFQUFFLEtBQUssS0FBSyxFQUFFO1FBQ3RCLE9BQU8sSUFBSSxDQUFBO0tBQ2Q7SUFFRCxRQUFRLGlCQUFPLENBQUMsSUFBSSxFQUFFO1FBQ2xCLEtBQUssUUFBUSxDQUFDO1FBQ2QsS0FBSyxlQUFlLENBQUM7UUFDckIsS0FBSyxRQUFRO1lBQ1QsT0FBTyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDNUM7WUFDSSxPQUFPLElBQUksQ0FBQTtLQUNsQjtBQUNMLENBQUM7QUF2QkQsMEJBdUJDIn0=