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)
}