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()
+ }
+ />
+
+
+ }
+ />,
+ );
+ }}
+ />
+