343 lines
12 KiB
TypeScript
343 lines
12 KiB
TypeScript
// Module ID: 4801
|
|
// Function ID: 4802
|
|
// Name: handleURL
|
|
// Dependencies: [5, 17, 4802, 1085, 3, 4803, 4805, 4806, 4807, 1949, 4808, 1126, 5053, 1382, 5056, 1386, 5069, 14072, 2]
|
|
// Exports: default
|
|
|
|
// Module 4801 (handleURL)
|
|
import LoggerDefault from "Logger" /* 3 */;
|
|
import react_native from "react-native" /* 17 */;
|
|
import Constants from "Constants" /* 1085 */;
|
|
import _asyncToGenerator from "_asyncToGenerator" /* 5 */;
|
|
import ActionSheetStore from "ActionSheetStore" /* 4802 */;
|
|
import size from "module_2" /* 2 */;
|
|
|
|
function sanitizeURLPart(str) {
|
|
let replaced = str;
|
|
if (null != str) {
|
|
replaced = str.replace(/[^\x00-\x7F]+/g, (arg0) => encodeURIComponent(arg0));
|
|
}
|
|
return replaced;
|
|
}
|
|
let obj = function _handleURL() {
|
|
obj = _asyncToGenerator(async (arg0, arg1) => {
|
|
let closure_4;
|
|
let closure_5;
|
|
let closure_0 = arg0;
|
|
let closure_1 = arg1;
|
|
let closure_2 = arg2;
|
|
let c7 = 0;
|
|
let c8 = 0;
|
|
let c6 = 0;
|
|
let iter = (async (arg0, value) => {
|
|
let flag;
|
|
let flag2;
|
|
let open;
|
|
let openInBrowser;
|
|
let tmp4;
|
|
let tmp45;
|
|
function tryHandleCustomScheme(tryHandleUniversalLink) {
|
|
let protocol;
|
|
let regex;
|
|
let arr = tryHandleUniversalLink;
|
|
closure_0 = tryHandleUniversalLink;
|
|
const iter = closure_0(closure_2[6]).LINKING_SCHEMAS_VALUES[Symbol.iterator]();
|
|
const nextResult = iter.next();
|
|
while (iter !== undefined) {
|
|
({ regex, protocol } = nextResult);
|
|
let match = regex.exec(arr);
|
|
let tmp4;
|
|
if (match != null) {
|
|
tmp4 = match[1];
|
|
}
|
|
if (null != tmp4) {
|
|
let sum = protocol + tmp5;
|
|
arr = sum;
|
|
closure_0 = sum;
|
|
}
|
|
continue;
|
|
}
|
|
let first = null;
|
|
if (-1 !== arr.indexOf("://")) {
|
|
first = arr.split("://")[0];
|
|
}
|
|
if ("http" !== first) {
|
|
let promise;
|
|
if ("https" !== first) {
|
|
logger.info("tryHandleCustomScheme", arr);
|
|
const self = this;
|
|
const self2 = this;
|
|
promise = new Promise((arg0) => {
|
|
closure_0 = arg0;
|
|
obj = closure_2_1(closure_2_2[5]);
|
|
const tryOpenSchemeResult = obj.tryOpenScheme(closure_0);
|
|
const nextPromise = tryOpenSchemeResult.then(() => {
|
|
logger.info("Custom scheme opened successfully.");
|
|
closure_0(true);
|
|
});
|
|
nextPromise.catch(() => {
|
|
logger.info("Custom scheme failed to open.");
|
|
closure_0(false);
|
|
});
|
|
});
|
|
}
|
|
return promise;
|
|
}
|
|
promise = new Promise((fn) => {
|
|
logger.info("URL is not a custom scheme.");
|
|
fn(false);
|
|
});
|
|
}
|
|
function tryHandleWhitelistedURL(tryHandleUniversalLink) {
|
|
closure_0 = tryHandleUniversalLink;
|
|
function _loop(protocol) {
|
|
let promise;
|
|
closure_0 = protocol;
|
|
let num = 0;
|
|
if (null !== regex.exec(closure_0)) {
|
|
obj = { v: promise };
|
|
let tmp = globalThis;
|
|
const self = this;
|
|
const self2 = this;
|
|
num = obj;
|
|
promise = new Promise((url) => {
|
|
closure_0 = url;
|
|
const canOpenURLResult = closure_3_4.canOpenURL(closure_0);
|
|
const nextPromise = canOpenURLResult.then((result) => {
|
|
const tmp = result;
|
|
if (tmp) {
|
|
obj = regex(closure_3_2[7]);
|
|
obj.performURLNavigation(protocol);
|
|
closure_0(true);
|
|
} else {
|
|
logger.info("Whitelisted URL, but cannot be opened (app likely not installed).");
|
|
closure_0(false);
|
|
}
|
|
});
|
|
nextPromise.catch((error) => {
|
|
obj = { error };
|
|
logger.info("Whitelisted URL encountered an error.", obj);
|
|
closure_0(false);
|
|
});
|
|
});
|
|
}
|
|
return num;
|
|
}
|
|
const iter = closure_0(closure_2[8]).LINKING_WHITELIST_VALUES[Symbol.iterator]();
|
|
const nextResult = iter.next();
|
|
while (iter !== undefined) {
|
|
let regex = nextResult.regex;
|
|
let _loopResult = _loop(nextResult.protocol);
|
|
if (0 !== _loopResult) {
|
|
if (tmp3) {
|
|
let v = _loopResult.v;
|
|
iter.return();
|
|
return v;
|
|
}
|
|
}
|
|
continue;
|
|
}
|
|
let promise = new Promise((fn) => {
|
|
logger.info("URL is not whitelisted.");
|
|
fn(false);
|
|
});
|
|
return promise;
|
|
}
|
|
if (1 === tmp4) {
|
|
if (arg0 === 1) {
|
|
c8 = 3;
|
|
throw value;
|
|
} else if (arg0 === 2) {
|
|
c8 = 3;
|
|
let obj5 = { value, done: true };
|
|
return obj5;
|
|
} else {
|
|
tryHandleUniversalLink = flag2;
|
|
if (tryHandleUniversalLink) {
|
|
openInBrowser();
|
|
} else {
|
|
let obj6 = /^[a-zA-Z0-9+-.]+:/;
|
|
tryHandleUniversalLink = obj6.test(tryHandleUniversalLink) || `https://${tryHandleUniversalLink}`;
|
|
let obj7 = /^https?:/i;
|
|
tryHandleUniversalLink = obj7.test(tryHandleUniversalLink);
|
|
if (tryHandleUniversalLink) {
|
|
const obj8 = closure_132_1(closure_132_2[15]);
|
|
tmp45 = obj8.parse(tryHandleUniversalLink);
|
|
tmp45.pathname = closure_132_8(tmp45.pathname);
|
|
tmp45.search = closure_132_8(tmp45.search);
|
|
tmp45.hash = closure_132_8(tmp45.hash);
|
|
const obj9 = closure_132_1(closure_132_2[15]);
|
|
tryHandleUniversalLink = obj9.format(tmp45);
|
|
c6 = 0;
|
|
}
|
|
const payload = closure_132_1(closure_132_2[16])(tryHandleUniversalLink).payload;
|
|
const obj10 = { payload, safe: true };
|
|
tryHandleUniversalLink = closure_132_1(closure_132_2[17])(obj10);
|
|
if (!tryHandleUniversalLink) {
|
|
const tmp41 = flag;
|
|
if (tmp41) {
|
|
tryHandleUniversalLink = function tryHandleUniversalLink(flag) {
|
|
closure_0 = flag;
|
|
const promise = new Promise((arg0) => {
|
|
closure_0 = arg0;
|
|
obj = closure_2_1(closure_2_2[5]);
|
|
const result = obj.tryOpenUrlAsUniversalLink(closure_0);
|
|
const nextPromise = result.then(() => {
|
|
logger.info("Universal link opened successfully.");
|
|
closure_0(true);
|
|
});
|
|
nextPromise.catch(() => {
|
|
logger.info("URL is not a handled universal link.");
|
|
closure_0(false);
|
|
});
|
|
});
|
|
return promise;
|
|
};
|
|
c7 = 3;
|
|
c8 = 1;
|
|
const obj11 = { value: tryHandleUniversalLink(tryHandleUniversalLink), done: false };
|
|
return obj11;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else if (2 === tmp4) {
|
|
let tmp12 = tmp45;
|
|
c6 = 0;
|
|
c8 = 3;
|
|
return { value: "IconComponent", done: null };
|
|
} else if (3 === tmp4) {
|
|
if (arg0 === 1) {
|
|
c8 = 3;
|
|
throw value;
|
|
} else if (arg0 === 2) {
|
|
c8 = 3;
|
|
return { value, done: true };
|
|
} else {
|
|
const logger = value;
|
|
tryHandleUniversalLink = logger;
|
|
if (!tryHandleUniversalLink) {
|
|
let tmp11 = tryHandleUniversalLink;
|
|
tryHandleUniversalLink = tryHandleCustomScheme(tryHandleUniversalLink);
|
|
c7 = 4;
|
|
c8 = 1;
|
|
return { value: tryHandleUniversalLink, done: false };
|
|
}
|
|
}
|
|
} else if (4 === tmp4) {
|
|
if (arg0 === 1) {
|
|
c8 = 3;
|
|
throw value;
|
|
} else if (arg0 === 2) {
|
|
c8 = 3;
|
|
return { value, done: true };
|
|
} else {
|
|
let closure_8 = value;
|
|
tryHandleUniversalLink = closure_8;
|
|
if (!tryHandleUniversalLink) {
|
|
let tmp9 = tryHandleUniversalLink;
|
|
tryHandleUniversalLink = tryHandleWhitelistedURL(tryHandleUniversalLink);
|
|
c7 = 5;
|
|
c8 = 1;
|
|
return { value: tryHandleUniversalLink, done: false };
|
|
}
|
|
}
|
|
} else if (arg0 === 1) {
|
|
c8 = 3;
|
|
throw value;
|
|
} else if (arg0 === 2) {
|
|
c8 = 3;
|
|
obj = { value, done: true };
|
|
return obj;
|
|
} else {
|
|
let tmp5 = tryHandleUniversalLink;
|
|
let closure_9 = value;
|
|
tryHandleUniversalLink = closure_9;
|
|
if (!tryHandleUniversalLink) {
|
|
let tmp6 = openInBrowser;
|
|
let tmp7 = openInBrowser();
|
|
}
|
|
}
|
|
await "IconComponent";
|
|
tryHandleUniversalLink = closure_0;
|
|
let obj4 = closure_2;
|
|
if (closure_2 === undefined) {
|
|
obj4 = {};
|
|
}
|
|
flag = obj4.allowExternal ?? true;
|
|
flag2 = obj4.forceExternalBrowser ?? false;
|
|
openInBrowser = function openInBrowser() {
|
|
const tmp = closure_2_1;
|
|
obj = closure_2_1(closure_2_2[9]);
|
|
if (null != obj.sanitizeUrl(tryHandleUniversalLink)) {
|
|
let SAFARI = constants.SAFARI;
|
|
if (tryHandleUniversalLink.startsWith("https:")) {
|
|
const obj2 = closure_2_0(closure_2_2[12]);
|
|
let browserManagerSelectedBrowser = obj2.getBrowserManagerSelectedBrowser();
|
|
let tmp11 = closure_1;
|
|
const tmp9 = closure_2_0;
|
|
if (closure_1 == null) {
|
|
tmp11 = browserManagerSelectedBrowser;
|
|
}
|
|
SAFARI = tmp11;
|
|
const tmp12 = flag2 && tmp11 === constants.IN_APP;
|
|
if (tmp12) {
|
|
if (browserManagerSelectedBrowser === constants.IN_APP) {
|
|
const tmp9Result = tmp9(closure_2_2[13]);
|
|
browserManagerSelectedBrowser = tmp9Result.isIOS() ? tmp6.SAFARI : tmp6.CHROME;
|
|
}
|
|
SAFARI = browserManagerSelectedBrowser;
|
|
}
|
|
}
|
|
if (constants.IN_APP === SAFARI) {
|
|
const obj6 = closure_2_0(closure_2_2[12]);
|
|
const result = obj6.browserManagerOpenUrl(tryHandleUniversalLink, tmp6.IN_APP);
|
|
result.catch(() => {
|
|
const presentFailedToast = tryHandleUniversalLink(flag[10]).presentFailedToast;
|
|
tryHandleUniversalLink(flag[10]);
|
|
const intl = tryHandleUniversalLink(flag[11]).intl;
|
|
presentFailedToast("" + intl.string(tryHandleUniversalLink(flag[11]).t.HryVrx) + " " + closure_1_0);
|
|
});
|
|
const obj7 = closure_2_0(closure_2_2[13]);
|
|
const isIOSResult = obj7.isIOS() && open.isOpen();
|
|
if (isIOSResult) {
|
|
const tmpResult = tmp(closure_2_2[14]);
|
|
tmpResult.hideAllActionSheets();
|
|
}
|
|
} else if (constants.CHROME === SAFARI) {
|
|
const obj5 = closure_2_0(closure_2_2[12]);
|
|
const result1 = obj5.browserManagerOpenUrl(tryHandleUniversalLink, tmp6.CHROME);
|
|
result1.catch(() => {
|
|
const presentFailedToast = tryHandleUniversalLink(flag[10]).presentFailedToast;
|
|
tryHandleUniversalLink(flag[10]);
|
|
const intl = tryHandleUniversalLink(flag[11]).intl;
|
|
presentFailedToast("" + intl.string(tryHandleUniversalLink(flag[11]).t.HryVrx) + " " + closure_1_0);
|
|
});
|
|
} else {
|
|
const SAFARI2 = tmp6.SAFARI;
|
|
const obj4 = closure_2_0(closure_2_2[12]);
|
|
const result2 = obj4.browserManagerOpenUrl(tryHandleUniversalLink, tmp6.SAFARI);
|
|
}
|
|
} else {
|
|
let presentFailedToast = closure_2_0(closure_2_2[10]).presentFailedToast;
|
|
closure_2_0(closure_2_2[10]);
|
|
let intl = closure_2_0(tmp2[11]).intl;
|
|
presentFailedToast(intl.string(closure_2_0(tmp2[11]).t.XiqzAp));
|
|
}
|
|
};
|
|
return "Set";
|
|
})();
|
|
let nextResult = iter.next();
|
|
return iter;
|
|
});
|
|
return obj(...arguments);
|
|
};
|
|
const Linking = react_native.Linking;
|
|
const WebBrowserType = Constants.WebBrowserType;
|
|
let tmp2 = new LoggerDefault("handleURL");
|
|
let closure_7 = tmp2;
|
|
let result = size.fileFinishedImporting("modules/links/native/handleURL.tsx");
|
|
|
|
export default function handleURL(arg0, arg1) {
|
|
return obj(...arguments);
|
|
};
|