326 lines
10 KiB
TypeScript
326 lines
10 KiB
TypeScript
// Metro module 3881 (f3882).
|
|
import ActionSheetStore from "../../action_sheet/native/ActionSheetStore";
|
|
import { WebBrowserType } from "../../../Constants";
|
|
import Logger from "../../debug/Logger";
|
|
import { LINKING_SCHEMAS_VALUES } from "./LinkingSchemas";
|
|
import { LINKING_WHITELIST_VALUES } from "./LinkingWhitelist";
|
|
import Module3888 from "../../../_bundle/Module3888";
|
|
import { presentFailedToast } from "../../toast/native/ToastUtils";
|
|
import { intl, t } from "../../../intl/index.native";
|
|
import { getBrowserManagerSelectedBrowser, browserManagerOpenUrl } from "./BrowserManager";
|
|
import { isIOS } from "../../../utils/PlatformUtils";
|
|
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
|
|
import Url from "../../../_bundle/Url_1469";
|
|
import parseURL from "../../../utils/native/parseURL";
|
|
import handleSupportedURL from "./handleSupportedURL";
|
|
function $mk114414($env) {
|
|
return function tryHandleUniversalLink(a0) {
|
|
let env31324 = {
|
|
$parent: $env
|
|
};
|
|
env31324[0] = a0;
|
|
return new Promise((resolve) => {
|
|
const r2 = env31324.$parent;
|
|
let env31918 = {
|
|
$parent: r2
|
|
};
|
|
env31918[0] = resolve;
|
|
(0, r2[1])(r2[2][5]).tryOpenUrlAsUniversalLink(env31324[0]).then(() => {
|
|
env31918.$parent[7].info("Universal link opened successfully.");
|
|
(0, env31918[0])(true);
|
|
}).catch(() => {
|
|
env31918.$parent[7].info("URL is not a handled universal link.");
|
|
(0, env31918[0])(false);
|
|
});
|
|
});
|
|
};
|
|
}
|
|
function $mk114415($env) {
|
|
return function tryHandleCustomScheme(a0) {
|
|
let r63;
|
|
const r1 = $env;
|
|
let env31325 = {
|
|
$parent: $env
|
|
};
|
|
let r2 = a0;
|
|
env31325[0] = a0;
|
|
for (const item of LINKING_SCHEMAS_VALUES) {
|
|
const { regex, protocol } = item;
|
|
const r35 = regex.exec(r2);
|
|
const r37 = r35 == null ? void 0 : r35[1];
|
|
if (r37 != null) {
|
|
const r41 = protocol + r37;
|
|
r2 = r41;
|
|
env31325[0] = r41;
|
|
}
|
|
}
|
|
const r48 = r2.indexOf("://") !== -1 ? r2.split("://")[0] : null;
|
|
if (r48 !== "http" && r48 !== "https") {
|
|
c2204_7.info("tryHandleCustomScheme", r2);
|
|
r63 = new Promise((resolve) => {
|
|
const r2 = env31325.$parent;
|
|
let env31919 = {
|
|
$parent: r2
|
|
};
|
|
env31919[0] = resolve;
|
|
(0, r2[1])(r2[2][5]).tryOpenScheme(env31325[0]).then(() => {
|
|
env31919.$parent[7].info("Custom scheme opened successfully.");
|
|
(0, env31919[0])(true);
|
|
}).catch(() => {
|
|
env31919.$parent[7].info("Custom scheme failed to open.");
|
|
(0, env31919[0])(false);
|
|
});
|
|
});
|
|
} else {
|
|
r63 = new Promise($mk117842(r1));
|
|
}
|
|
return r63;
|
|
};
|
|
}
|
|
function $mk114416($env) {
|
|
return function tryHandleWhitelistedURL(a0) {
|
|
const r0 = $env;
|
|
let env31326 = {
|
|
$parent: $env
|
|
};
|
|
env31326[0] = a0;
|
|
const _loop = function _loop(c31920_0) {
|
|
return env31326[1].exec(env31326[0]) !== null ? {
|
|
v: new Promise((c32113_0) => {
|
|
env31326.$parent[4].canOpenURL(c31920_0).then((result) => {
|
|
const r3 = env31326.$parent;
|
|
if (result) {
|
|
(0, r3[1])(r3[2][7]).performURLNavigation(env31326[0]);
|
|
c32113_0(true);
|
|
} else {
|
|
r3[7].info("Whitelisted URL, but cannot be opened (app likely not installed).");
|
|
c32113_0(false);
|
|
}
|
|
}).catch((a0) => {
|
|
env31326.$parent[7].info("Whitelisted URL encountered an error.", {
|
|
error: a0
|
|
});
|
|
c32113_0(false);
|
|
});
|
|
})
|
|
} : 0;
|
|
};
|
|
for (const item of LINKING_WHITELIST_VALUES) {
|
|
env31326[1] = item.regex;
|
|
const r31 = _loop(item.protocol);
|
|
if (r31 === 0) {
|
|
continue;
|
|
}
|
|
if (!r31) {
|
|
continue;
|
|
}
|
|
return r31.v;
|
|
}
|
|
return new Promise($mk117845(r0));
|
|
};
|
|
}
|
|
function $mk117842($env) {
|
|
return (a0) => {
|
|
c2204_7.info("URL is not a custom scheme.");
|
|
a0(false);
|
|
};
|
|
}
|
|
function $mk117845($env) {
|
|
return (a0) => {
|
|
c2204_7.info("URL is not whitelisted.");
|
|
a0(false);
|
|
};
|
|
}
|
|
let c2204_7;
|
|
let env2204 = {};
|
|
const sanitizeURLPart = function sanitizeURLPart(a0) {
|
|
return a0 != null ? a0.replace(/[^\x00-\x7F]+/g, (a0) => encodeURIComponent(a0)) : a0;
|
|
};
|
|
c2204_7 = new Logger("handleURL");
|
|
export default async function handleURL(c24875_0, c24875_1, c24875_2) {
|
|
let forceExternalBrowser;
|
|
let c24875_3, c24875_4, c24875_5;
|
|
let c24875_6 = 0;
|
|
const r13 = env2204;
|
|
try {
|
|
let env29236;
|
|
c24875_4 = r13;
|
|
const r19 = env29236 = {
|
|
$parent: r13
|
|
};
|
|
c24875_3 = r19;
|
|
env29236[2] = void 0;
|
|
env29236[3] = void 0;
|
|
env29236[0] = c24875_0;
|
|
env29236[1] = c24875_1;
|
|
let r40 = c24875_2;
|
|
if (r40 === void 0) {
|
|
r40 = {};
|
|
}
|
|
L15: {
|
|
L12: {
|
|
const allowExternal = r40.allowExternal;
|
|
if (allowExternal !== void 0) {
|
|
env29236[2] = allowExternal;
|
|
forceExternalBrowser = r40.forceExternalBrowser;
|
|
if (forceExternalBrowser !== void 0) {
|
|
break L12;
|
|
}
|
|
} else {
|
|
env29236[2] = true;
|
|
forceExternalBrowser = r40.forceExternalBrowser;
|
|
if (forceExternalBrowser !== void 0) {
|
|
break L12;
|
|
}
|
|
}
|
|
env29236[3] = false;
|
|
env29236[5] = void 0;
|
|
env29236[6] = void 0;
|
|
env29236[7] = void 0;
|
|
env29236[8] = void 0;
|
|
env29236[9] = void 0;
|
|
env29236[4] = function openInBrowser() {
|
|
if (Module3888.sanitizeUrl(env29236[0]) != null) {
|
|
let SAFARI = WebBrowserType.SAFARI;
|
|
if (!(!env29236[0].startsWith("https:") && !env29236[0].startsWith("http:"))) {
|
|
let r40 = getBrowserManagerSelectedBrowser();
|
|
let r41 = env29236[1];
|
|
if (r41 == null) {
|
|
r41 = r40;
|
|
}
|
|
const r42 = env29236[3] && r41 === WebBrowserType.IN_APP;
|
|
SAFARI = r41;
|
|
if (r42) {
|
|
if (r40 === WebBrowserType.IN_APP) {
|
|
r40 = isIOS() ? WebBrowserType.SAFARI : WebBrowserType.CHROME;
|
|
}
|
|
SAFARI = r40;
|
|
}
|
|
}
|
|
if (WebBrowserType.IN_APP === SAFARI) {
|
|
browserManagerOpenUrl(env29236[0], WebBrowserType.IN_APP).catch(() => {
|
|
presentFailedToast(`${intl.string(t.HryVrx)} ${env29236[0]}`);
|
|
});
|
|
if (isIOS() && ActionSheetStore.isOpen()) {
|
|
ActionSheetActionCreators.hideAllActionSheets();
|
|
}
|
|
} else if (WebBrowserType.CHROME === SAFARI) {
|
|
browserManagerOpenUrl(env29236[0], WebBrowserType.CHROME).catch(() => {
|
|
presentFailedToast(`${intl.string(t.HryVrx)} ${env29236[0]}`);
|
|
});
|
|
} else {
|
|
WebBrowserType.SAFARI;
|
|
browserManagerOpenUrl(env29236[0], WebBrowserType.SAFARI);
|
|
}
|
|
} else {
|
|
presentFailedToast(intl.string(t.XiqzAp));
|
|
}
|
|
};
|
|
break L15;
|
|
}
|
|
env29236[3] = forceExternalBrowser;
|
|
env29236[5] = void 0;
|
|
env29236[6] = void 0;
|
|
env29236[7] = void 0;
|
|
env29236[8] = void 0;
|
|
env29236[9] = void 0;
|
|
env29236[4] = function openInBrowser() {
|
|
if (Module3888.sanitizeUrl(env29236[0]) != null) {
|
|
let SAFARI = WebBrowserType.SAFARI;
|
|
if (!(!env29236[0].startsWith("https:") && !env29236[0].startsWith("http:"))) {
|
|
let r40 = getBrowserManagerSelectedBrowser();
|
|
let r41 = env29236[1];
|
|
if (r41 == null) {
|
|
r41 = r40;
|
|
}
|
|
const r42 = env29236[3] && r41 === WebBrowserType.IN_APP;
|
|
SAFARI = r41;
|
|
if (r42) {
|
|
if (r40 === WebBrowserType.IN_APP) {
|
|
r40 = isIOS() ? WebBrowserType.SAFARI : WebBrowserType.CHROME;
|
|
}
|
|
SAFARI = r40;
|
|
}
|
|
}
|
|
if (WebBrowserType.IN_APP === SAFARI) {
|
|
browserManagerOpenUrl(env29236[0], WebBrowserType.IN_APP).catch(() => {
|
|
presentFailedToast(`${intl.string(t.HryVrx)} ${env29236[0]}`);
|
|
});
|
|
if (isIOS() && ActionSheetStore.isOpen()) {
|
|
ActionSheetActionCreators.hideAllActionSheets();
|
|
}
|
|
} else if (WebBrowserType.CHROME === SAFARI) {
|
|
browserManagerOpenUrl(env29236[0], WebBrowserType.CHROME).catch(() => {
|
|
presentFailedToast(`${intl.string(t.HryVrx)} ${env29236[0]}`);
|
|
});
|
|
} else {
|
|
WebBrowserType.SAFARI;
|
|
browserManagerOpenUrl(env29236[0], WebBrowserType.SAFARI);
|
|
}
|
|
} else {
|
|
presentFailedToast(intl.string(t.XiqzAp));
|
|
}
|
|
};
|
|
}
|
|
await void 0;
|
|
if (env29236[3]) {
|
|
(0, env29236[4])();
|
|
} else {
|
|
if (!/^[a-zA-Z0-9+-.]+:/.test(env29236[0])) {
|
|
env29236[0] = "https://" + env29236[0];
|
|
}
|
|
if (/^https?:/i.test(env29236[0])) {
|
|
c24875_6 = 1;
|
|
env29236[5] = Url.parse(env29236[0]);
|
|
const r103 = env29236[5];
|
|
r103.pathname = sanitizeURLPart(env29236[5].pathname);
|
|
env29236[5].search = sanitizeURLPart(env29236[5].search);
|
|
env29236[5].hash = sanitizeURLPart(env29236[5].hash);
|
|
env29236[0] = Url.format(env29236[5]);
|
|
c24875_6 = 0;
|
|
}
|
|
env29236[6] = parseURL(env29236[0]).payload;
|
|
if (!handleSupportedURL({
|
|
payload: env29236[6],
|
|
safe: true
|
|
})) {
|
|
if (env29236[2]) {
|
|
const r126 = env29236[0];
|
|
env29236[7] = await $mk114414(env2204)(r126);
|
|
if (!env29236[7]) {
|
|
const r151 = env29236[0];
|
|
env29236[8] = await $mk114415(env2204)(r151);
|
|
if (!env29236[8]) {
|
|
const r176 = env29236[0];
|
|
env29236[9] = await $mk114416(env2204)(r176);
|
|
if (!env29236[9]) {
|
|
(0, env29236[4])();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} catch ($e) {
|
|
const r36 = $e;
|
|
let r8 = r36;
|
|
c24875_5 = r36;
|
|
if (c24875_6 !== 0) {
|
|
while (true) {
|
|
try {
|
|
c24875_6 = 0;
|
|
} catch (r206) {
|
|
r8 = r206;
|
|
c24875_5 = r206;
|
|
if (c24875_6 === 0) {
|
|
break;
|
|
}
|
|
continue;
|
|
}
|
|
return void 0;
|
|
}
|
|
}
|
|
throw r8;
|
|
}
|
|
};
|