diff --git a/src/core/i18n/default.json b/src/core/i18n/default.json index d97d968..3ab3350 100644 --- a/src/core/i18n/default.json +++ b/src/core/i18n/default.json @@ -35,6 +35,7 @@ "COPY_URL": "Copy URL", "DEBUG": "Debug", "DEBUGGER_URL": "Debugger URL", + "DEVTOOLS_URL": "DevTools URL", "DELETE": "Delete", "DESC_EXTRACT_FONTS_FROM_THEME": "Looks out for \"fonts\" field in your currently applied theme and install it.", "DEVELOPER": "Developer", diff --git a/src/core/ui/settings/pages/Developer/index.tsx b/src/core/ui/settings/pages/Developer/index.tsx index 6f66a81..788f0b1 100644 --- a/src/core/ui/settings/pages/Developer/index.tsx +++ b/src/core/ui/settings/pages/Developer/index.tsx @@ -15,13 +15,14 @@ import { ErrorBoundary } from "@ui/components"; import { createStyles, TextStyleSheet } from "@ui/styles"; import { NativeModules } from "react-native"; import { ScrollView, StyleSheet } from "react-native"; +import { showToast } from "@ui/toasts"; const { hideActionSheet } = lazyDestructure(() => findByProps("openLazy", "hideActionSheet")); const { showSimpleActionSheet } = lazyDestructure(() => findByProps("showSimpleActionSheet")); const { openAlert } = lazyDestructure(() => findByProps("openAlert", "dismissAlert")); const { AlertModal, AlertActionButton } = lazyDestructure(() => findByProps("AlertModal", "AlertActions")); -const RDT_EMBED_LINK = ""; +const RDT_EMBED_LINK = "https://cdn.bwlok.dev/rdt/devTools.js"; const useStyles = createStyles({ leadingText: { @@ -44,31 +45,75 @@ export default function Developer() { - ws://} - defaultValue={settings.debuggerUrl} - onChange={(v: string) => settings.debuggerUrl = v} - /> - - } - onPress={() => connectToDebugger(settings.debuggerUrl)} - /> - {isReactDevToolsPreloaded() && <> - } - onPress={() => window[getReactDevToolsProp() || "__vendetta_rdc"]?.connectToDevTools({ - host: settings.debuggerUrl.split(":")?.[0], - resolveRNStyle: StyleSheet.flatten, - })} - /> - } + + + ws://} + defaultValue={settings.debuggerUrl} + onChange={(v: string) => settings.debuggerUrl = v} + /> + + } + onPress={() => connectToDebugger(settings.debuggerUrl)} + /> + + + {isReactDevToolsPreloaded() && <> + + + ws://} + defaultValue={settings.devToolsUrl} + onChange={(v: string) => settings.devToolsUrl = v} + /> + + } + onPress={async () => { + if (!settings.devToolsUrl?.trim()) { + showToast("Invalid devTools URL!", findAssetId("Small")); + return; + } + + try { + const devTools = window[getReactDevToolsProp() || "__vendetta_rdc"]; + + 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() && <>