50 lines
2.4 KiB
TypeScript
50 lines
2.4 KiB
TypeScript
import { lazyDestructure } from "@lib/utils/lazy";
|
|
import { findByFilePathLazy, findByProps, findByPropsLazy } from "@metro/wrappers";
|
|
import { Linking } from "react-native";
|
|
import type { Dispatcher } from "./types/flux";
|
|
|
|
export * as components from "./components";
|
|
|
|
// Discord
|
|
export const constants = findByPropsLazy("Fonts", "Permissions");
|
|
export const channels = findByPropsLazy("getVoiceChannelId");
|
|
export const i18n = findByPropsLazy("Messages");
|
|
|
|
export const clipboard = findByPropsLazy("setString", "getString", "hasString");
|
|
export const assets = findByPropsLazy("registerAsset");
|
|
export const invites = findByPropsLazy("acceptInviteAndTransitionToInviteChannel");
|
|
export const commands = findByPropsLazy("getBuiltInCommands");
|
|
export const navigation = findByPropsLazy("pushLazy");
|
|
export const toasts = findByFilePathLazy("modules/toast/native/ToastActionCreators.tsx", true);
|
|
export const messageUtil = findByPropsLazy("sendBotMessage");
|
|
export const navigationStack = findByPropsLazy("createStackNavigator");
|
|
export const NavigationNative = findByPropsLazy("NavigationContainer");
|
|
export const semver = findByPropsLazy("parse", "clean");
|
|
|
|
export const tokens = findByPropsLazy("unsafe_rawColors", "colors");
|
|
export const { useToken } = lazyDestructure(() => findByProps("useToken"));
|
|
|
|
// Polyfill LinkingUtils
|
|
|
|
const openURL = (url: string) => Linking.openURL(url);
|
|
export const url = nativeModuleProxy.NativeLinkingModule || nativeModuleProxy.DCDLinkingManager ? {
|
|
openURL,
|
|
openDeeplink: openURL,
|
|
handleSupportedURL: openURL,
|
|
isDiscordConnectOauth2Deeplink: () => {
|
|
console.warn("url.isDiscordConnectOauth2Deeplink is not implemented and will always return false");
|
|
return false;
|
|
},
|
|
showLongPressUrlActionSheet: () => console.warn("url.showLongPressUrlActionSheet is not implemented"),
|
|
handleMessageLinking: findByFilePathLazy("modules/links/native/handleContentLinking.tsx", true),
|
|
} : findByPropsLazy("openURL", "openDeeplink");
|
|
|
|
// Flux
|
|
export const Flux = findByPropsLazy("connectStores");
|
|
// TODO: Making this a proxy/lazy fuck things up for some reason
|
|
export const FluxDispatcher = findByProps("_interceptors") as Dispatcher;
|
|
export const FluxUtils = findByProps("useStateFromStores");
|
|
|
|
// React
|
|
export const React = window.React = findByPropsLazy("createElement") as typeof import("react");
|
|
export const ReactNative = window.ReactNative = findByPropsLazy("AppRegistry") as typeof import("react-native");
|