@vechain/connex-wallet-buddy
Version:
to bridge connex sign request to wallet
86 lines • 5.38 kB
JavaScript
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=
;