Files
discord-decomp/modules/links/native/BrowserManager.tsx
T
2026-11-01 12:12:55 +02:00

149 lines
5.0 KiB
TypeScript

// Metro module 4155 (f4156).
import { AppState, NativeEventEmitter, NativeModules } from "react-native";
import { create } from "../../../_bundle/Module644";
import { isAndroid, isIOS } from "../../../utils/PlatformUtils";
import Module4156, { BrowserType } from "../../../_bundle/Module4156";
import { WebBrowserType } from "../../../ConstantsIOS";
import Linking from "../../../lib/native/Linking";
import { assertNever } from "../../../utils/GlobalUtils";
let c2392_8;
const BrowserManager = NativeModules.BrowserManager;
let c2392_7 = create(() => ({
isChromeInstalled: isAndroid() ? Module4156.getConstants().isChromeInstalled : BrowserManager.isChromeInstalled,
selectedBrowser: isAndroid() ? Module4156.getConstants().selectedBrowser : BrowserManager.selectedBrowser,
supportsInAppBrowser: isAndroid() ? Module4156.getConstants().supportsInAppBrowser : BrowserManager.supportsInAppBrowser,
isInAppBrowserOpen: false
}));
c2392_8 = null;
export function useBrowserManagerIsChromeInstalled() {
return c2392_7((a0) => a0.isChromeInstalled);
}
export function getBrowserManagerIsChromeInstalled() {
return c2392_7.getState().isChromeInstalled;
}
export function useBrowserManagerSupportsInAppBrowser() {
return c2392_7((a0) => a0.supportsInAppBrowser);
}
export function useBrowserManagerSelectedBrowser() {
return c2392_7((a0) => a0.selectedBrowser);
}
export function getBrowserManagerSelectedBrowser() {
return c2392_7.getState().selectedBrowser;
}
export function useIsInAppBrowserOpen() {
return c2392_7((a0) => a0.isInAppBrowserOpen);
}
export function getIsInAppBrowserOpen() {
return c2392_7.getState().isInAppBrowserOpen;
}
export function subscribeToIsInAppBrowserOpen(c13869_0) {
return c2392_7.subscribe((a0, a1) => {
if (a0.isInAppBrowserOpen !== a1.isInAppBrowserOpen) {
c13869_0(a0.isInAppBrowserOpen, a1.isInAppBrowserOpen);
}
});
}
export function browserManagerOpenUrl(a0, r8 = c2392_7.getState().selectedBrowser) {
L19: {
if (r8 !== WebBrowserType.SAFARI) {
if (r8 === WebBrowserType.CHROME && !c2392_7.getState().isChromeInstalled) {
break L19;
}
if (r8 === WebBrowserType.IN_APP && isAndroid() && !c2392_7.getState().supportsInAppBrowser) {
break L19;
}
if (WebBrowserType.IN_APP === r8) {
return (isAndroid() ? Module4156.openInAppURL(a0) : BrowserManager.openInAppURL(a0)).then((result) => {
if (result !== false) {
c2392_7.setState({
isInAppBrowserOpen: true
});
const r11 = c2392_8;
if (r11 != null) {
r11.remove();
}
c2392_8 = null;
if (isIOS()) {
c2392_8 = new NativeEventEmitter(BrowserManager).addListener("safariViewControllerDidFinish", () => {
c2392_7.setState({
isInAppBrowserOpen: false
});
const r6 = c2392_8;
if (r6 != null) {
r6.remove();
}
c2392_8 = null;
});
} else if (isAndroid()) {
c2392_8 = AppState.addEventListener("change", (a0) => {
if (a0 === "active" && c2392_7.getState().isInAppBrowserOpen) {
c2392_7.setState({
isInAppBrowserOpen: false
});
const r12 = c2392_8;
if (r12 != null) {
r12.remove();
}
c2392_8 = null;
}
});
}
}
});
}
if (WebBrowserType.CHROME === r8) {
return isAndroid() ? Module4156.openInChromeURL(a0) : BrowserManager.openInChromeURL(a0, true);
}
return assertNever(r8);
}
}
Linking.performURLNavigation(a0);
return Promise.resolve();
}
export function browserManagerSelectBrowser(a0) {
if (isAndroid()) {
if (WebBrowserType.SAFARI === a0) {
Module4156.selectBrowser(BrowserType.SAFARI);
} else if (WebBrowserType.IN_APP === a0) {
Module4156.selectBrowser(BrowserType.IN_APP);
} else if (WebBrowserType.CHROME === a0) {
Module4156.selectBrowser(BrowserType.CHROME);
}
} else {
NativeModules.BrowserManager.selectBrowser(a0);
}
c2392_7.setState({
selectedBrowser: a0
});
}
export function browserManagerCloseBrowser() {
c2392_7.setState({
isInAppBrowserOpen: false
});
if (!isAndroid()) {
NativeModules.BrowserManager.closeBrowser();
}
}
export function openPlayStoreInlineInstall(a0, a1, a2) {
let r23;
let c13870_1 = Date.now();
if (isAndroid()) {
r23 = Module4156.openPlayStoreInline(a0, a1, function callback() {
const r7 = Date.now() - c13870_1;
if (a2 != null) {
a2(r7);
}
});
} else if (a1 == null) {
r23 = Promise.resolve(false);
} else {
if (a2 != null) {
BrowserManager.setOpenAppStoreDismissCallback(() => {
a2(Date.now() - c13870_1);
});
}
r23 = BrowserManager.openAppStoreInline(a0, a1);
}
return r23;
}