Skip to content

Commit 15e3325

Browse files
committed
add param for testing for immediate reconnect after kick or error (warning: will cause infinite reload loop)
1 parent 60fc5ef commit 15e3325

File tree

3 files changed

+24
-14
lines changed

3 files changed

+24
-14
lines changed

src/appParams.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export type AppQsParams = {
1212
username?: string
1313
lockConnect?: string
1414
autoConnect?: string
15+
alwaysReconnect?: string
1516
// googledrive.ts params
1617
state?: string
1718
// ServersListProvider.tsx params

src/index.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ import { onAppLoad, resourcepackReload, resourcePackState } from './resourcePack
6262
import { ConnectPeerOptions, connectToPeer } from './localServerMultiplayer'
6363
import CustomChannelClient from './customClient'
6464
import { registerServiceWorker } from './serviceWorker'
65-
import { appStatusState, lastConnectOptions } from './react/AppStatusProvider'
65+
import { appStatusState, lastConnectOptions, quickDevReconnect } from './react/AppStatusProvider'
6666

6767
import { fsState } from './loadSave'
6868
import { watchFov } from './rendererUtils'
@@ -215,8 +215,13 @@ export async function connect (connectOptions: ConnectOptions) {
215215
const destroyAll = (wasKicked = false) => {
216216
if (ended) return
217217
loadingTimerState.loading = false
218-
if (!wasKicked && miscUiState.appConfig?.allowAutoConnect && appQueryParams.autoConnect && hadConnected) {
219-
location.reload()
218+
const { alwaysReconnect } = appQueryParams
219+
if ((!wasKicked && miscUiState.appConfig?.allowAutoConnect && appQueryParams.autoConnect && hadConnected) || (alwaysReconnect)) {
220+
if (alwaysReconnect === 'quick' || alwaysReconnect === 'fast') {
221+
quickDevReconnect()
222+
} else {
223+
location.reload()
224+
}
220225
}
221226
errorAbortController.abort()
222227
ended = true
@@ -957,7 +962,7 @@ const maybeEnterGame = () => {
957962
}
958963
}
959964

960-
if (appQueryParams.reconnect && process.env.NODE_ENV === 'development') {
965+
if (appQueryParams.reconnect && localStorage.lastConnectOptions && process.env.NODE_ENV === 'development') {
961966
const lastConnect = JSON.parse(localStorage.lastConnectOptions ?? {})
962967
return waitForConfigFsLoad(async () => {
963968
void connect({

src/react/AppStatusProvider.tsx

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,17 @@ export const reconnectReload = () => {
5454
}
5555
}
5656

57+
export const quickDevReconnect = () => {
58+
if (!lastConnectOptions.value) {
59+
return
60+
}
61+
62+
resetAppStatusState()
63+
window.dispatchEvent(new window.CustomEvent('connect', {
64+
detail: lastConnectOptions.value
65+
}))
66+
}
67+
5768
export default () => {
5869
const lastState = useRef(JSON.parse(JSON.stringify(appStatusState)))
5970
const currentState = useSnapshot(appStatusState)
@@ -105,21 +116,14 @@ export default () => {
105116
}
106117
}, [isOpen])
107118

108-
const reconnect = () => {
109-
resetAppStatusState()
110-
window.dispatchEvent(new window.CustomEvent('connect', {
111-
detail: lastConnectOptions.value
112-
}))
113-
}
114-
115119
useEffect(() => {
116120
const controller = new AbortController()
117121
window.addEventListener('keyup', (e) => {
118122
if ('input textarea select'.split(' ').includes((e.target as HTMLElement).tagName?.toLowerCase() ?? '')) return
119123
if (activeModalStack.at(-1)?.reactType !== 'app-status') return
120124
// todo do only if reconnect is possible
121125
if (e.code !== 'KeyR' || !lastConnectOptions.value) return
122-
reconnect()
126+
quickDevReconnect()
123127
}, {
124128
signal: controller.signal
125129
})
@@ -140,7 +144,7 @@ export default () => {
140144
const account = await showOptionsModal('Choose account to connect with', [...accounts.map(account => account.username), 'Use other account'])
141145
if (!account) return
142146
lastConnectOptions.value!.authenticatedAccount = accounts.find(acc => acc.username === account) || true
143-
reconnect()
147+
quickDevReconnect()
144148
}
145149

146150
const lastAutoCapturedPackets = getLastAutoCapturedPackets()
@@ -184,7 +188,7 @@ export default () => {
184188
actionsSlot={
185189
<>
186190
{displayAuthButton && <Button label='Authenticate' onClick={authReconnectAction} />}
187-
{displayVpnButton && <PossiblyVpnBypassProxyButton reconnect={reconnect} />}
191+
{displayVpnButton && <PossiblyVpnBypassProxyButton reconnect={quickDevReconnect} />}
188192
{replayActive && <Button label={`Download Packets Replay ${replayLogger?.contents.split('\n').length}L`} onClick={downloadPacketsReplay} />}
189193
{wasDisconnected && lastAutoCapturedPackets && <Button label={`Inspect Last ${lastAutoCapturedPackets} Packets`} onClick={() => downloadAutoCapturedPackets()} />}
190194
</>

0 commit comments

Comments
 (0)