From eb1ab466b276b42a36aad251ba96641e8fcad036 Mon Sep 17 00:00:00 2001 From: kmmiio99o <164557248+kmmiio99o@users.noreply.github.com> Date: Tue, 9 Dec 2025 23:55:49 +0100 Subject: [PATCH] feat: Rebase Developer settings page (again) --- .../ui/settings/pages/Developer/index.tsx | 366 +++++++++--------- 1 file changed, 188 insertions(+), 178 deletions(-) diff --git a/src/core/ui/settings/pages/Developer/index.tsx b/src/core/ui/settings/pages/Developer/index.tsx index cc6ded9..412c0ad 100644 --- a/src/core/ui/settings/pages/Developer/index.tsx +++ b/src/core/ui/settings/pages/Developer/index.tsx @@ -26,6 +26,7 @@ import { import { findByProps } from "@metro/wrappers"; import { semanticColors } from "@ui/color"; import { ErrorBoundary } from "@ui/components"; +import ErrorBoundaryScreen from "@core/ui/reporter/components/ErrorBoundaryScreen"; import { createStyles, TextStyleSheet } from "@ui/styles"; import { NativeModules } from "react-native"; import { ScrollView, StyleSheet } from "react-native"; @@ -52,6 +53,12 @@ const useStyles = createStyles({ color: semanticColors.TEXT_MUTED, marginRight: -4, }, + inputGroup: { + marginTop: 4, + borderTopLeftRadius: 16, + borderTopRightRadius: 16, + overflow: "hidden", + }, }); export default function Developer() { @@ -85,212 +92,141 @@ export default function Developer() { defaultValue={settings.debuggerUrl} onChange={(v: string) => (settings.debuggerUrl = v)} /> - } + value={settings.autoDebugger} + onValueChange={(v: boolean) => { + settings.autoDebugger = v; }} - > - } - value={settings.autoDebugger} - onValueChange={(v: boolean) => { - settings.autoDebugger = v; - }} - /> - + /> } + subLabel="Connect to Chrome DevTools for debugging" + icon={} onPress={() => connectToDebugger(settings.debuggerUrl)} /> + {isReactDevToolsPreloaded() && ( - <> - - ( - - ws:// - - )} - defaultValue={settings.devToolsUrl} - onChange={(v: string) => (settings.devToolsUrl = v)} - /> - - - } - value={settings.autoDevTools} - onValueChange={(v: boolean) => { - settings.autoDevTools = v; - }} - /> - - + + ( + + ws:// + + )} + defaultValue={settings.devToolsUrl} + onChange={(v: string) => (settings.devToolsUrl = v)} + /> + } + value={settings.autoDevTools} + onValueChange={(v: boolean) => { + settings.autoDevTools = v; + }} + /> + } + onPress={async () => { + if (!settings.devToolsUrl?.trim()) { + showToast("Invalid devTools URL!", findAssetId("Small")); + return; } - onPress={async () => { - if (!settings.devToolsUrl?.trim()) { - showToast("Invalid devTools URL!", findAssetId("Small")); + + try { + const devTools = + window[getReactDevToolsProp() || "__vendetta_rdc"]; + + if (!devTools?.connectToDevTools) { + showToast( + "React DevTools not available", + findAssetId("Small"), + ); return; } - try { - const devTools = - window[getReactDevToolsProp() || "__vendetta_rdc"]; + await devTools.connectToDevTools({ + host: settings.devToolsUrl.split(":")?.[0], + resolveRNStyle: StyleSheet.flatten, + }); + showToast( + "Connected to React DevTools!", + findAssetId("Check"), + ); + } catch (error) { + showToast( + "Failed to connect to React DevTools", + findAssetId("Small"), + ); + } + }} + /> - if (!devTools?.connectToDevTools) { - showToast( - "Invalid devTools URL!", - findAssetId("Small"), - ); - return; - } - - await devTools.connectToDevTools({ - host: settings.devToolsUrl.split(":")?.[0], - resolveRNStyle: StyleSheet.flatten, - }); - } catch (error) { - showToast("Invalid devTools URL!", findAssetId("Small")); - } - }} - /> - - - )} - {isLoaderConfigSupported() && ( - <> - + {isLoaderConfigSupported() && isVendettaLoader() && ( } - value={loaderConfig.customLoadUrl.enabled} + label={Strings.LOAD_REACT_DEVTOOLS} + subLabel={`${Strings.VERSION}: ${getReactDevToolsVersion()}`} + icon={ + + } + value={loaderConfig.loadReactDevTools} onValueChange={(v: boolean) => { - loaderConfig.customLoadUrl.enabled = v; + loaderConfig.loadReactDevTools = v; }} /> - {loaderConfig.customLoadUrl.enabled && ( - - (loaderConfig.customLoadUrl.url = v) - } - placeholder="http://localhost:4040/kettu.js" - label={Strings.SHIGGY_URL} - /> - } - /> - )} - {isReactDevToolsPreloaded() && isVendettaLoader() && ( - - } - value={loaderConfig.loadReactDevTools} - onValueChange={(v: boolean) => { - loaderConfig.loadReactDevTools = v; - }} - /> - )} - - + )} + )} - - } - onPress={() => { - openAlert( - "pupu-clear-bundle-reload-confirmation", - - - NativeModules.BundleUpdaterManager.reload() - } - /> - - - } - />, - ); - }} - /> + + {isLoaderConfigSupported() && ( + + } + value={loaderConfig.customLoadUrl.enabled} + onValueChange={(v: boolean) => { + loaderConfig.customLoadUrl.enabled = v; + }} + /> + {loaderConfig.customLoadUrl.enabled && ( + + (loaderConfig.customLoadUrl.url = v) + } + placeholder="http://localhost:4040/shiggycord.js" + label={Strings.SHIGGYCORD_URL} + /> + } + /> + )} + + )} + + } trailing={TableRow.Arrow} onPress={() => - navigation.push("PUPU_CUSTOM_PAGE", { + navigation.push("SHIGGYCORD_CUSTOM_PAGE", { title: Strings.ASSET_BROWSER, render: AssetBrowser, }) } /> - } - onPress={() => - showSimpleActionSheet({ - key: "ErrorBoundaryTools", - header: { - title: "Which ErrorBoundary do you want to trip?", - icon: ( - - ), - onClose: () => hideActionSheet(), - }, - options: [ - { - label: "ShiggyCord", - isDestructive: true, - onPress: () => - navigation.push("SHIGGYCORD_CUSTOM_PAGE", { - noErrorBoundary: true, - }), - }, - ], - }) - } - /> } /> + } + onPress={() => + showSimpleActionSheet({ + key: "ErrorBoundaryTools", + header: { + title: "Which ErrorBoundary do you want to trip?", + icon: ( + + ), + }, + options: [ + { + label: Strings.SHIGGYCORD, + onPress: () => + navigation.push("SHIGGYCORD_CUSTOM_PAGE", { + render: () => ( + {}} + /> + ), + }), + }, + { + label: "Discord", + isDestructive: true, + onPress: () => + navigation.push("SHIGGYCORD_CUSTOM_PAGE", { + noErrorBoundary: true, + }), + }, + ], + }) + } + /> + + + } + onPress={() => { + openAlert( + "shiggycord-clear-bundle-reload-confirmation", + + + NativeModules.BundleUpdaterManager.reload() + } + /> + + + } + />, + ); + }} + /> +