forked from Berry-Dash/launcher
Savefile is proper now
This commit is contained in:
@@ -50,7 +50,7 @@ export default function VersionInfo () {
|
|||||||
<p>
|
<p>
|
||||||
Installed{' '}
|
Installed{' '}
|
||||||
{new Intl.DateTimeFormat(undefined).format(
|
{new Intl.DateTimeFormat(undefined).format(
|
||||||
downloadedVersionsConfig.timestamps[managingVersion] ?? 0
|
downloadedVersionsConfig.list[managingVersion] ?? 0
|
||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -106,7 +106,9 @@ export default function Installs () {
|
|||||||
<p>
|
<p>
|
||||||
{(() => {
|
{(() => {
|
||||||
const count =
|
const count =
|
||||||
downloadedVersionsConfig?.list.filter(v => {
|
Object.keys(
|
||||||
|
downloadedVersionsConfig?.list ?? []
|
||||||
|
).filter(v => {
|
||||||
const info = getVersionInfo(v)
|
const info = getVersionInfo(v)
|
||||||
if (!info) return false
|
if (!info) return false
|
||||||
if (
|
if (
|
||||||
@@ -136,12 +138,12 @@ export default function Installs () {
|
|||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
})}
|
})}
|
||||||
{downloadedVersionsConfig?.list.filter(v => {
|
{Object.keys(downloadedVersionsConfig?.list ?? []).filter(v => {
|
||||||
const info = getVersionInfo(v)
|
const info = getVersionInfo(v)
|
||||||
if (!info) return false
|
if (!info) return false
|
||||||
return info.game === id
|
return info.game === id
|
||||||
}).length != 0 ? (
|
}).length != 0 ? (
|
||||||
downloadedVersionsConfig?.list
|
Object.keys(downloadedVersionsConfig?.list ?? [])
|
||||||
.sort((a, b) => {
|
.sort((a, b) => {
|
||||||
const infoA = getVersionInfo(a)
|
const infoA = getVersionInfo(a)
|
||||||
const infoB = getVersionInfo(b)
|
const infoB = getVersionInfo(b)
|
||||||
@@ -219,7 +221,7 @@ export default function Installs () {
|
|||||||
<p>
|
<p>
|
||||||
Installed{' '}
|
Installed{' '}
|
||||||
{new Intl.DateTimeFormat(undefined).format(
|
{new Intl.DateTimeFormat(undefined).format(
|
||||||
downloadedVersionsConfig.timestamps[entry]
|
downloadedVersionsConfig?.list[entry]
|
||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -87,7 +87,9 @@ export default function RootLayout ({
|
|||||||
if (!normalConfig || !serverVersionList) return []
|
if (!normalConfig || !serverVersionList) return []
|
||||||
|
|
||||||
return serverVersionList.versions
|
return serverVersionList.versions
|
||||||
.filter(v => !downloadedVersionsConfig?.list.includes(v.id))
|
.filter(
|
||||||
|
v => !Object.keys(downloadedVersionsConfig?.list ?? []).includes(v.id)
|
||||||
|
)
|
||||||
.filter(v => {
|
.filter(v => {
|
||||||
if (
|
if (
|
||||||
platform() === 'linux' &&
|
platform() === 'linux' &&
|
||||||
@@ -123,7 +125,7 @@ export default function RootLayout ({
|
|||||||
|
|
||||||
const gamesMap = new Map<number, Game>()
|
const gamesMap = new Map<number, Game>()
|
||||||
|
|
||||||
downloadedVersionsConfig.list.forEach(i => {
|
Object.keys(downloadedVersionsConfig.list).forEach(i => {
|
||||||
const version = getVersionInfo(i)
|
const version = getVersionInfo(i)
|
||||||
if (!version) return
|
if (!version) return
|
||||||
const game = getGameInfo(version.game)
|
const game = getGameInfo(version.game)
|
||||||
@@ -143,7 +145,7 @@ export default function RootLayout ({
|
|||||||
const allowWine =
|
const allowWine =
|
||||||
platform() !== 'linux' || normalConfig?.settings.useWineOnUnixWhenNeeded
|
platform() !== 'linux' || normalConfig?.settings.useWineOnUnixWhenNeeded
|
||||||
|
|
||||||
const installed = downloadedVersionsConfig.list.filter(v => {
|
const installed = Object.keys(downloadedVersionsConfig.list).filter(v => {
|
||||||
const info = getVersionInfo(v)
|
const info = getVersionInfo(v)
|
||||||
if (!info) return false
|
if (!info) return false
|
||||||
if (info.wine && !allowWine) return false
|
if (info.wine && !allowWine) return false
|
||||||
@@ -274,6 +276,7 @@ export default function RootLayout ({
|
|||||||
const versionsConfig = await readVersionsConfig()
|
const versionsConfig = await readVersionsConfig()
|
||||||
setDownloadedVersionsConfig(versionsConfig)
|
setDownloadedVersionsConfig(versionsConfig)
|
||||||
setNormalConfig(normalConfig)
|
setNormalConfig(normalConfig)
|
||||||
|
setLoadingText('Finishing...')
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
|
|
||||||
if (!(await isPermissionGranted())) {
|
if (!(await isPermissionGranted())) {
|
||||||
@@ -338,8 +341,7 @@ export default function RootLayout ({
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
const date = Date.now()
|
const date = Date.now()
|
||||||
data.list = [...data.list, download.version]
|
data.list = { ...data.list, [download.version]: date }
|
||||||
data.timestamps = { ...data.timestamps, [download.version]: date }
|
|
||||||
setDownloadedVersionsConfig(data)
|
setDownloadedVersionsConfig(data)
|
||||||
writeVersionsConfig(data)
|
writeVersionsConfig(data)
|
||||||
} else {
|
} else {
|
||||||
@@ -725,19 +727,14 @@ export default function RootLayout ({
|
|||||||
|
|
||||||
setDownloadedVersionsConfig(prev => {
|
setDownloadedVersionsConfig(prev => {
|
||||||
if (!prev) return prev
|
if (!prev) return prev
|
||||||
const updatedList = prev.list.filter(
|
const updatedList = Object.fromEntries(
|
||||||
v => v !== managingVersion
|
Object.entries(prev.list).filter(
|
||||||
)
|
([k]) => k !== managingVersion
|
||||||
const updatedTimestamps =
|
|
||||||
Object.fromEntries(
|
|
||||||
Object.entries(prev.timestamps).filter(
|
|
||||||
([k]) => k !== managingVersion
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
)
|
||||||
const updatedConfig = {
|
const updatedConfig = {
|
||||||
...prev,
|
...prev,
|
||||||
list: updatedList,
|
list: updatedList
|
||||||
timestamps: updatedTimestamps
|
|
||||||
}
|
}
|
||||||
writeVersionsConfig(updatedConfig)
|
writeVersionsConfig(updatedConfig)
|
||||||
setManagingVersion(null)
|
setManagingVersion(null)
|
||||||
|
|||||||
@@ -1,20 +1,17 @@
|
|||||||
type VersionsConfigData = {
|
export type VersionsConfigData = {
|
||||||
version: string
|
version: string
|
||||||
list: string[]
|
list: Record<string, number>
|
||||||
timestamps: Record<string, number>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class VersionsConfig {
|
export class VersionsConfig {
|
||||||
constructor (
|
constructor (
|
||||||
public version: string,
|
public version: string,
|
||||||
public list: string[] = [],
|
public list: Record<string, number> = {}
|
||||||
public timestamps: Record<string, number> = {}
|
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
static import (data: VersionsConfigData) {
|
static import (data: VersionsConfigData) {
|
||||||
const cfg = new VersionsConfig(data.version)
|
const cfg = new VersionsConfig(data.version)
|
||||||
cfg.list = [...data.list]
|
cfg.list = { ...data.list }
|
||||||
cfg.timestamps = { ...data.timestamps }
|
|
||||||
return cfg
|
return cfg
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {
|
|||||||
readTextFile,
|
readTextFile,
|
||||||
writeFile
|
writeFile
|
||||||
} from '@tauri-apps/plugin-fs'
|
} from '@tauri-apps/plugin-fs'
|
||||||
import { VersionsConfig } from '../types/VersionsConfig'
|
import { VersionsConfig, VersionsConfigData } from '../types/VersionsConfig'
|
||||||
|
|
||||||
export async function readNormalConfig (): Promise<NormalConfig> {
|
export async function readNormalConfig (): Promise<NormalConfig> {
|
||||||
const version = await app.getVersion()
|
const version = await app.getVersion()
|
||||||
@@ -82,7 +82,33 @@ export async function readVersionsConfig (): Promise<VersionsConfig> {
|
|||||||
return new VersionsConfig(version)
|
return new VersionsConfig(version)
|
||||||
}
|
}
|
||||||
const config = await readTextFile('versions.json', options)
|
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 {
|
} catch {
|
||||||
return new VersionsConfig(version)
|
return new VersionsConfig(version)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user