Update launche to new API

This commit is contained in:
Lncvrt committed 2026-02-26 23:22:16 -07:00
1 parent e066dd0681
commit 19788a8a3c
6 files changed
+54 -27

No files matched your search

+1
View File
@@ -139,6 +139,7 @@ async fn download(
} }
}; };
let total_size = resp.content_length().unwrap_or(0); let total_size = resp.content_length().unwrap_or(0);
let _ = app.emit("download-size", format!("{}:{}", &name, &total_size));
let mut downloaded: u64 = 0; let mut downloaded: u64 = 0;
let mut stream = resp.bytes_stream(); let mut stream = resp.bytes_stream();
+49 -7
View File
@@ -181,6 +181,21 @@ export default function RootLayout ({
useEffect(() => { useEffect(() => {
let unlistenProgress: (() => void) | null = null let unlistenProgress: (() => void) | null = null
listen<string>('download-size', event => {
const [displayName, sizeStr] = event.payload.split(':')
const size = Number(sizeStr)
setDownloadProgress(prev => {
const i = prev.findIndex(d => d.version === displayName)
if (i === -1) return prev
const copy = [...prev]
copy[i] = {
...copy[i],
size
}
return copy
})
}).then(f => (unlistenProgress = f))
listen<string>('download-progress', event => { listen<string>('download-progress', event => {
const [displayName, progStr, totalSizeStr, speedStr, etaSecsStr] = const [displayName, progStr, totalSizeStr, speedStr, etaSecsStr] =
event.payload.split(':') event.payload.split(':')
@@ -285,7 +300,18 @@ export default function RootLayout ({
const newDownloads = newVersions.map( const newDownloads = newVersions.map(
version => version =>
new DownloadProgress(version, 0, 0, false, true, false, false, 0, 0) new DownloadProgress(
version,
0,
0,
false,
true,
false,
false,
0,
0,
0
)
) )
setDownloadProgress(prev => [...prev, ...newDownloads]) setDownloadProgress(prev => [...prev, ...newDownloads])
@@ -322,17 +348,33 @@ export default function RootLayout ({
prev.map(d => (d.version === versionId ? { ...d, queued: false } : d)) prev.map(d => (d.version === versionId ? { ...d, queued: false } : d))
) )
try { const downloadInfoRequest = await axios.get(
await axios.get( 'https://games.lncvrt.xyz/api/launcher/download?gameId=' +
'https://games.lncvrt.xyz/api/launcher/download?id=' + info.id info.id +
'&downloadId=' +
info.download
)
if (!downloadInfoRequest.data.success) {
setDownloadProgress(prev =>
prev.map(d =>
d.version === versionId
? { ...d, queued: false, failed: true, progress: 0 }
: d
)
) )
} catch {} if (normalConfig?.settings.allowNotifications)
await notifyUser(
'Download Failed',
`The download for version ${info.displayName} has failed.`
)
return
}
const res = await invoke<string>('download', { const res = await invoke<string>('download', {
url: info.downloadUrl, url: downloadInfoRequest.data.data.url,
name: info.id, name: info.id,
executable: info.executable, executable: info.executable,
hash: info.sha512sum hash: downloadInfoRequest.data.data.hash
}) })
if (res === '1') { if (res === '1') {
+1 -1
View File
@@ -70,7 +70,7 @@ export default function DownloadsPopup () {
maximumFractionDigits: 1 maximumFractionDigits: 1
})}{' '} })}{' '}
of{' '} of{' '}
{prettyBytes(getVersionInfo(v.version)?.size ?? 0, { {prettyBytes(v.size, {
minimumFractionDigits: 1, minimumFractionDigits: 1,
maximumFractionDigits: 1 maximumFractionDigits: 1
})}{' '} })}{' '}
-15
View File
@@ -107,21 +107,6 @@ export default function VersionVersionPopup () {
: 'N/A'} : 'N/A'}
</p> </p>
</div> </div>
<div
className='entry-info-item btntheme2'
hidden={!viewingInfoFromDownloads}
>
<FontAwesomeIcon icon={faHardDrive} color='lightgray' />
<p>
Size when downloaded (zipped):{' '}
{versionInfo
? prettyBytes(versionInfo.size, {
minimumFractionDigits: 2,
maximumFractionDigits: 2
})
: 'Loading...'}
</p>
</div>
<div <div
className='entry-info-item btntheme2' className='entry-info-item btntheme2'
onClick={async () => { onClick={async () => {
+1
View File
@@ -8,6 +8,7 @@ export class DownloadProgress {
public hash_checking: boolean, public hash_checking: boolean,
public finishing: boolean, public finishing: boolean,
public speed: number, public speed: number,
public size: number,
public etaSecs: number public etaSecs: number
) {} ) {}
} }
+2 -4
View File
@@ -3,13 +3,11 @@ export interface GameVersion {
displayName: string displayName: string
releaseDate: number releaseDate: number
game: number game: number
downloadUrl: string
executable: string
sha512sum: string
size: number
place: number place: number
changelog: string changelog: string
wine: number | undefined wine: number | undefined
category: number category: number
lastRevision: number lastRevision: number
download: number
executable: string
} }