From 1d7f8885634c0eed70a32a74f8f874d2385636fb Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Tue, 27 Jan 2026 18:43:15 -0700 Subject: [PATCH] Savefile is proper now --- src/app/componets/VersionInfo.tsx | 2 +- src/app/game/page.tsx | 10 ++++++---- src/app/layout.tsx | 27 ++++++++++++--------------- src/app/types/VersionsConfig.ts | 11 ++++------- src/app/util/BazookaManager.ts | 30 ++++++++++++++++++++++++++++-- 5 files changed, 51 insertions(+), 29 deletions(-) diff --git a/src/app/componets/VersionInfo.tsx b/src/app/componets/VersionInfo.tsx index 28dcdc8..0bdf4fb 100644 --- a/src/app/componets/VersionInfo.tsx +++ b/src/app/componets/VersionInfo.tsx @@ -50,7 +50,7 @@ export default function VersionInfo () {

Installed{' '} {new Intl.DateTimeFormat(undefined).format( - downloadedVersionsConfig.timestamps[managingVersion] ?? 0 + downloadedVersionsConfig.list[managingVersion] ?? 0 )}

diff --git a/src/app/game/page.tsx b/src/app/game/page.tsx index e24e4b1..7cd9407 100644 --- a/src/app/game/page.tsx +++ b/src/app/game/page.tsx @@ -106,7 +106,9 @@ export default function Installs () {

{(() => { const count = - downloadedVersionsConfig?.list.filter(v => { + Object.keys( + downloadedVersionsConfig?.list ?? [] + ).filter(v => { const info = getVersionInfo(v) if (!info) return false if ( @@ -136,12 +138,12 @@ export default function Installs () { ) })} - {downloadedVersionsConfig?.list.filter(v => { + {Object.keys(downloadedVersionsConfig?.list ?? []).filter(v => { const info = getVersionInfo(v) if (!info) return false return info.game === id }).length != 0 ? ( - downloadedVersionsConfig?.list + Object.keys(downloadedVersionsConfig?.list ?? []) .sort((a, b) => { const infoA = getVersionInfo(a) const infoB = getVersionInfo(b) @@ -219,7 +221,7 @@ export default function Installs () {

Installed{' '} {new Intl.DateTimeFormat(undefined).format( - downloadedVersionsConfig.timestamps[entry] + downloadedVersionsConfig?.list[entry] )}

diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 8f81168..b51ded8 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -87,7 +87,9 @@ export default function RootLayout ({ if (!normalConfig || !serverVersionList) return [] return serverVersionList.versions - .filter(v => !downloadedVersionsConfig?.list.includes(v.id)) + .filter( + v => !Object.keys(downloadedVersionsConfig?.list ?? []).includes(v.id) + ) .filter(v => { if ( platform() === 'linux' && @@ -123,7 +125,7 @@ export default function RootLayout ({ const gamesMap = new Map() - downloadedVersionsConfig.list.forEach(i => { + Object.keys(downloadedVersionsConfig.list).forEach(i => { const version = getVersionInfo(i) if (!version) return const game = getGameInfo(version.game) @@ -143,7 +145,7 @@ export default function RootLayout ({ const allowWine = platform() !== 'linux' || normalConfig?.settings.useWineOnUnixWhenNeeded - const installed = downloadedVersionsConfig.list.filter(v => { + const installed = Object.keys(downloadedVersionsConfig.list).filter(v => { const info = getVersionInfo(v) if (!info) return false if (info.wine && !allowWine) return false @@ -274,6 +276,7 @@ export default function RootLayout ({ const versionsConfig = await readVersionsConfig() setDownloadedVersionsConfig(versionsConfig) setNormalConfig(normalConfig) + setLoadingText('Finishing...') setLoading(false) if (!(await isPermissionGranted())) { @@ -338,8 +341,7 @@ export default function RootLayout ({ return } const date = Date.now() - data.list = [...data.list, download.version] - data.timestamps = { ...data.timestamps, [download.version]: date } + data.list = { ...data.list, [download.version]: date } setDownloadedVersionsConfig(data) writeVersionsConfig(data) } else { @@ -725,19 +727,14 @@ export default function RootLayout ({ setDownloadedVersionsConfig(prev => { if (!prev) return prev - const updatedList = prev.list.filter( - v => v !== managingVersion - ) - const updatedTimestamps = - Object.fromEntries( - Object.entries(prev.timestamps).filter( - ([k]) => k !== managingVersion - ) + const updatedList = Object.fromEntries( + Object.entries(prev.list).filter( + ([k]) => k !== managingVersion ) + ) const updatedConfig = { ...prev, - list: updatedList, - timestamps: updatedTimestamps + list: updatedList } writeVersionsConfig(updatedConfig) setManagingVersion(null) diff --git a/src/app/types/VersionsConfig.ts b/src/app/types/VersionsConfig.ts index 6bb8e8f..29ef400 100644 --- a/src/app/types/VersionsConfig.ts +++ b/src/app/types/VersionsConfig.ts @@ -1,20 +1,17 @@ -type VersionsConfigData = { +export type VersionsConfigData = { version: string - list: string[] - timestamps: Record + list: Record } export class VersionsConfig { constructor ( public version: string, - public list: string[] = [], - public timestamps: Record = {} + public list: Record = {} ) {} static import (data: VersionsConfigData) { const cfg = new VersionsConfig(data.version) - cfg.list = [...data.list] - cfg.timestamps = { ...data.timestamps } + cfg.list = { ...data.list } return cfg } } diff --git a/src/app/util/BazookaManager.ts b/src/app/util/BazookaManager.ts index f9a567d..7ed87ff 100644 --- a/src/app/util/BazookaManager.ts +++ b/src/app/util/BazookaManager.ts @@ -8,7 +8,7 @@ import { readTextFile, writeFile } from '@tauri-apps/plugin-fs' -import { VersionsConfig } from '../types/VersionsConfig' +import { VersionsConfig, VersionsConfigData } from '../types/VersionsConfig' export async function readNormalConfig (): Promise { const version = await app.getVersion() @@ -82,7 +82,33 @@ export async function readVersionsConfig (): Promise { return new VersionsConfig(version) } const config = await readTextFile('versions.json', options) - return VersionsConfig.import(JSON.parse(config)) + const raw = JSON.parse(config) + if ( + raw.version && + raw.list && + raw.timestamps && + (raw.version == '1.0.0' || + raw.version == '1.1.0' || + raw.version == '1.1.1' || + raw.version == '1.1.2' || + raw.version == '1.2.0' || + raw.version == '1.3.0' || + raw.version == '1.3.1' || + raw.version == '1.4.0' || + raw.version == '1.5.0') + ) { + raw.version = version + delete raw.list + raw.list = raw.timestamps + delete raw.timestamps + + await writeFile( + 'versions.json', + new TextEncoder().encode(JSON.stringify(raw, null, 2)), + options + ) + } + return VersionsConfig.import(raw) } catch { return new VersionsConfig(version) }