import { DialogBody, DialogButton, DialogControlsSection, DialogControlsSectionHeader, Field, Navigation, TextField, Toggle, } from '@decky/ui'; import { useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { FaFileArchive, FaLink, FaReact, FaSteamSymbol, FaTerminal } from 'react-icons/fa'; import { setShouldConnectToReactDevTools, setShowValveInternal } from '../../../../developer'; import Logger from '../../../../logger'; import { installFromURL } from '../../../../store'; import { useSetting } from '../../../../utils/hooks/useSetting'; import { getSetting } from '../../../../utils/settings'; import { FileSelectionType } from '../../../modals/filepicker'; import RemoteDebuggingSettings from '../general/RemoteDebugging'; const logger = new Logger('DeveloperIndex'); const installFromZip = async () => { const path = await getSetting('user_info.user_home', ''); if (path === '') { logger.error('The default path has not been found!'); return; } DeckyPluginLoader.openFilePicker(FileSelectionType.FILE, path, true, true, undefined, ['zip'], false, false).then( (val) => { const url = `file://${val.path}`; console.log(`Installing plugin locally from ${url}`); installFromURL(url); }, ); }; const getTabID = DeckyBackend.callable<[name: string], string>('utilities/get_tab_id'); export default function DeveloperSettings() { const [enableValveInternal, setEnableValveInternal] = useSetting('developer.valve_internal', false); const [reactDevtoolsEnabled, setReactDevtoolsEnabled] = useSetting('developer.rdt.enabled', false); const [reactDevtoolsIP, setReactDevtoolsIP] = useSetting('developer.rdt.ip', ''); const [pluginURL, setPluginURL] = useState(''); const textRef = useRef(null); const { t } = useTranslation(); return ( {t('SettingsDeveloperIndex.third_party_plugins.header')} } > {t('SettingsDeveloperIndex.third_party_plugins.button_zip')} setPluginURL(e?.target.value)} /> } icon={} > installFromURL(pluginURL)}> {t('SettingsDeveloperIndex.third_party_plugins.button_install')} {t('SettingsDeveloperIndex.header')} {t('SettingsDeveloperIndex.cef_console.desc')}} icon={} > { try { let tabId = await getTabID('SharedJSContext'); Navigation.NavigateToExternalWeb( 'localhost:8080/devtools/inspector.html?ws=localhost:8080/devtools/page/' + tabId, ); } catch (e) { console.error('Unable to find ID for SharedJSContext tab ', e); Navigation.NavigateToExternalWeb('localhost:8080'); } }} > {t('SettingsDeveloperIndex.cef_console.button')} {t('SettingsDeveloperIndex.valve_internal.desc1')}{' '} {t('SettingsDeveloperIndex.valve_internal.desc2')} } icon={} > { setEnableValveInternal(toggleValue); setShowValveInternal(toggleValue); }} /> {t('SettingsDeveloperIndex.react_devtools.desc')}

setReactDevtoolsIP(e?.target.value)} />
} icon={} > { setReactDevtoolsEnabled(toggleValue); setShouldConnectToReactDevTools(toggleValue); }} />
); }