import { ReactNative as RN, NavigationNative } from "@metro/common"; import { findByProps } from "@metro/filters"; import { connectToDebugger } from "@lib/debug"; import { useProxy } from "@lib/storage"; import { getAssetIDByName } from "@ui/assets"; import { Forms, ErrorBoundary } from "@ui/components"; import settings, { loaderConfig } from "@lib/settings"; import AssetBrowser from "@ui/settings/pages/AssetBrowser"; const { FormSection, FormRow, FormSwitchRow, FormInput, FormDivider } = Forms; const { hideActionSheet } = findByProps("openLazy", "hideActionSheet"); const { showSimpleActionSheet } = findByProps("showSimpleActionSheet"); export default function Developer() { const navigation = NavigationNative.useNavigation(); useProxy(settings); useProxy(loaderConfig); return ( settings.debuggerUrl = v} placeholder="127.0.0.1:9090" title="DEBUGGER URL" /> } onPress={() => connectToDebugger(settings.debuggerUrl)} /> {window.__vendetta_rdc && <> } onPress={() => window.__vendetta_rdc?.connectToDevTools({ host: settings.debuggerUrl.split(":")?.[0], resolveRNStyle: RN.StyleSheet.flatten, })} /> } {window.__vendetta_loader?.features.loaderConfig && } value={loaderConfig.customLoadUrl.enabled} onValueChange={(v: boolean) => { loaderConfig.customLoadUrl.enabled = v; }} /> {loaderConfig.customLoadUrl.enabled && <> loaderConfig.customLoadUrl.url = v} placeholder="http://localhost:4040/revenge.js" title="REVENGE URL" /> } {window.__vendetta_loader.features.devtools && } value={loaderConfig.loadReactDevTools} onValueChange={(v: boolean) => { loaderConfig.loadReactDevTools = v; }} />} } } trailing={FormRow.Arrow} onPress={() => navigation.push("RevengeCustomPage", { title: "Asset Browser", render: AssetBrowser, })} /> } trailing={FormRow.Arrow} onPress={() => showSimpleActionSheet({ key: "ErrorBoundaryTools", header: { title: "Which ErrorBoundary do you want to trip?", icon: , onClose: () => hideActionSheet(), }, options: [ // @ts-expect-error // Of course, to trigger an error, we need to do something incorrectly. The below will do! { label: "Revenge", onPress: () => navigation.push("RevengeCustomPage", { render: () => }) }, { label: "Discord", isDestructive: true, onPress: () => navigation.push("RevengeCustomPage", { noErrorBoundary: true }) }, ], })} /> ) }