fix wrong cache hit on local dev

This commit is contained in:
Vitaly Turovsky 2024-12-18 10:23:58 +03:00
commit 2c0b99ffdb
2 changed files with 26 additions and 17 deletions

View file

@ -1,4 +1,9 @@
import { versionsByMinecraftVersion } from 'minecraft-data'
import minecraftInitialDataJson from '../generated/minecraft-initial-data.json'
import { AuthenticatedAccount } from './react/ServersListProvider'
import { setLoadingScreenStatus } from './utils'
import { downloadSoundsIfNeeded } from './soundSystem'
import { miscUiState } from './globalState'
export type ConnectOptions = {
server?: string
@ -17,3 +22,22 @@ export type ConnectOptions = {
authenticatedAccount?: AuthenticatedAccount | true
peerOptions?: any
}
export const downloadNeededDataOnConnect = async (version: string) => {
// todo expose cache
const initialDataVersion = Object.keys(minecraftInitialDataJson)[0]!
if (version === initialDataVersion) {
// ignore cache hit
versionsByMinecraftVersion.pc[initialDataVersion]!.dataVersion!++
}
setLoadingScreenStatus(`Loading data for ${version}`)
if (!document.fonts.check('1em mojangles')) {
// todo instead re-render signs on load
await document.fonts.load('1em mojangles').catch(() => {
console.error('Failed to load font, signs wont be rendered correctly')
})
}
await window._MC_DATA_RESOLVER.promise // ensure data is loaded
await downloadSoundsIfNeeded()
miscUiState.loadedDataVersion = version
}

View file

@ -93,7 +93,7 @@ import { saveToBrowserMemory } from './react/PauseScreen'
import { ViewerWrapper } from 'prismarine-viewer/viewer/lib/viewerWrapper'
import './devReload'
import './water'
import { ConnectOptions } from './connect'
import { ConnectOptions, downloadNeededDataOnConnect } from './connect'
import { ref, subscribe } from 'valtio'
import { signInMessageState } from './react/SignInMessageProvider'
import { updateAuthenticatedAccountData, updateLoadedServerData } from './react/ServersListProvider'
@ -395,22 +395,7 @@ async function connect (connectOptions: ConnectOptions) {
throw new Error('Microsoft authentication is only supported on 1.19.4 - 1.20.6 (at least for now)')
}
// todo expose cache
const lastVersion = supportedVersions.at(-1)
if (version === lastVersion) {
// ignore cache hit
versionsByMinecraftVersion.pc[lastVersion]!['dataVersion']!++
}
setLoadingScreenStatus(`Loading data for ${version}`)
if (!document.fonts.check('1em mojangles')) {
// todo instead re-render signs on load
await document.fonts.load('1em mojangles').catch(() => {
console.error('Failed to load font, signs wont be rendered correctly')
})
}
await window._MC_DATA_RESOLVER.promise // ensure data is loaded
await downloadSoundsIfNeeded()
miscUiState.loadedDataVersion = version
await downloadNeededDataOnConnect(version)
try {
await resourcepackReload(version)
} catch (err) {