From 87b795bdc4a240b5caccb8ba07a0608c62a07ce0 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Thu, 9 Jan 2025 21:44:59 +0700 Subject: [PATCH] fix(regression): ip qs param was ignored fix: add local (gitignored) config that is merged into single config after the build --- .gitignore | 1 + rsbuild.config.ts | 6 +++++- src/globalState.ts | 3 +++ src/react/AddServerOrConnect.tsx | 13 ++++++++++--- src/react/ServersListProvider.tsx | 1 + 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 3a1888627..f2a0006e0 100644 --- a/.gitignore +++ b/.gitignore @@ -18,5 +18,6 @@ out generated storybook-static server-jar +config.local.json src/react/npmReactComponents.ts diff --git a/rsbuild.config.ts b/rsbuild.config.ts index 1085e3fcf..933a6d027 100644 --- a/rsbuild.config.ts +++ b/rsbuild.config.ts @@ -95,10 +95,14 @@ const appConfig = defineConfig({ fs.copyFileSync('./assets/release.json', './dist/release.json') } const configJson = JSON.parse(fs.readFileSync('./config.json', 'utf8')) + let configLocalJson = {} + try { + configLocalJson = JSON.parse(fs.readFileSync('./config.local.json', 'utf8')) + } catch (err) {} if (dev) { configJson.defaultProxy = ':8080' } - fs.writeFileSync('./dist/config.json', JSON.stringify(configJson), 'utf8') + fs.writeFileSync('./dist/config.json', JSON.stringify({ ...configJson, ...configLocalJson }), 'utf8') // childProcess.execSync('./scripts/prepareSounds.mjs', { stdio: 'inherit' }) // childProcess.execSync('tsx ./scripts/genMcDataTypes.ts', { stdio: 'inherit' }) // childProcess.execSync('tsx ./scripts/genPixelartTypes.ts', { stdio: 'inherit' }) diff --git a/src/globalState.ts b/src/globalState.ts index 54c5fc356..fbaabe819 100644 --- a/src/globalState.ts +++ b/src/globalState.ts @@ -114,6 +114,9 @@ export type AppConfig = { peerJsServerFallback?: string promoteServers?: Array<{ ip, description, version? }> mapsProvider?: string + + defaultSettings?: Record + allowAutoConnect?: boolean } export const miscUiState = proxy({ diff --git a/src/react/AddServerOrConnect.tsx b/src/react/AddServerOrConnect.tsx index d98a74b85..e3fb2a153 100644 --- a/src/react/AddServerOrConnect.tsx +++ b/src/react/AddServerOrConnect.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import React, { useEffect } from 'react' import Screen from './Screen' import Input from './Input' import Button from './Button' @@ -26,11 +26,12 @@ interface Props { accounts?: string[] authenticatedAccounts?: number versions?: string[] + allowAutoConnect?: boolean } const ELEMENTS_WIDTH = 190 -export default ({ onBack, onConfirm, title = 'Add a Server', initialData, parseQs, onQsConnect, placeholders, accounts, versions, authenticatedAccounts }: Props) => { +export default ({ onBack, onConfirm, title = 'Add a Server', initialData, parseQs, onQsConnect, placeholders, accounts, versions, allowAutoConnect }: Props) => { const qsParams = parseQs ? new URLSearchParams(window.location.search) : undefined const qsParamName = qsParams?.get('name') const qsParamIp = qsParams?.get('ip') @@ -40,7 +41,7 @@ export default ({ onBack, onConfirm, title = 'Add a Server', initialData, parseQ const qsParamLockConnect = qsParams?.get('lockConnect') const qsIpParts = qsParamIp?.split(':') - const ipParts = initialData?.ip.split(':') + const ipParts = initialData?.ip ? initialData?.ip.split(':') : undefined const [serverName, setServerName] = React.useState(initialData?.name ?? qsParamName ?? '') const [serverIp, setServerIp] = React.useState(ipParts?.[0] ?? qsIpParts?.[0] ?? '') @@ -69,6 +70,12 @@ export default ({ onBack, onConfirm, title = 'Add a Server', initialData, parseQ authenticatedAccountOverride, } + useEffect(() => { + if (qsParams?.get('autoConnect') === 'true' && qsParams?.get('ip') && allowAutoConnect) { + onQsConnect?.(commonUseOptions) + } + }, []) + return