Update launche to new API
This commit is contained in:
6 files changed
+54
-27
No files matched your search
@@ -139,6 +139,7 @@ async fn download(
|
||||
}
|
||||
};
|
||||
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 stream = resp.bytes_stream();
|
||||
|
||||
+49
-7
@@ -181,6 +181,21 @@ export default function RootLayout ({
|
||||
useEffect(() => {
|
||||
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 => {
|
||||
const [displayName, progStr, totalSizeStr, speedStr, etaSecsStr] =
|
||||
event.payload.split(':')
|
||||
@@ -285,7 +300,18 @@ export default function RootLayout ({
|
||||
|
||||
const newDownloads = newVersions.map(
|
||||
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])
|
||||
@@ -322,17 +348,33 @@ export default function RootLayout ({
|
||||
prev.map(d => (d.version === versionId ? { ...d, queued: false } : d))
|
||||
)
|
||||
|
||||
try {
|
||||
await axios.get(
|
||||
'https://games.lncvrt.xyz/api/launcher/download?id=' + info.id
|
||||
const downloadInfoRequest = await axios.get(
|
||||
'https://games.lncvrt.xyz/api/launcher/download?gameId=' +
|
||||
info.id +
|
||||
'&downloadId=' +
|
||||
info.download
|
||||
)
|
||||
} catch {}
|
||||
if (!downloadInfoRequest.data.success) {
|
||||
setDownloadProgress(prev =>
|
||||
prev.map(d =>
|
||||
d.version === versionId
|
||||
? { ...d, queued: false, failed: true, progress: 0 }
|
||||
: d
|
||||
)
|
||||
)
|
||||
if (normalConfig?.settings.allowNotifications)
|
||||
await notifyUser(
|
||||
'Download Failed',
|
||||
`The download for version ${info.displayName} has failed.`
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
const res = await invoke<string>('download', {
|
||||
url: info.downloadUrl,
|
||||
url: downloadInfoRequest.data.data.url,
|
||||
name: info.id,
|
||||
executable: info.executable,
|
||||
hash: info.sha512sum
|
||||
hash: downloadInfoRequest.data.data.hash
|
||||
})
|
||||
|
||||
if (res === '1') {
|
||||
|
||||
@@ -70,7 +70,7 @@ export default function DownloadsPopup () {
|
||||
maximumFractionDigits: 1
|
||||
})}{' '}
|
||||
of{' '}
|
||||
{prettyBytes(getVersionInfo(v.version)?.size ?? 0, {
|
||||
{prettyBytes(v.size, {
|
||||
minimumFractionDigits: 1,
|
||||
maximumFractionDigits: 1
|
||||
})}{' '}
|
||||
|
||||
@@ -107,21 +107,6 @@ export default function VersionVersionPopup () {
|
||||
: 'N/A'}
|
||||
</p>
|
||||
</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
|
||||
className='entry-info-item btntheme2'
|
||||
onClick={async () => {
|
||||
|
||||
@@ -8,6 +8,7 @@ export class DownloadProgress {
|
||||
public hash_checking: boolean,
|
||||
public finishing: boolean,
|
||||
public speed: number,
|
||||
public size: number,
|
||||
public etaSecs: number
|
||||
) {}
|
||||
}
|
||||
@@ -3,13 +3,11 @@ export interface GameVersion {
|
||||
displayName: string
|
||||
releaseDate: number
|
||||
game: number
|
||||
downloadUrl: string
|
||||
executable: string
|
||||
sha512sum: string
|
||||
size: number
|
||||
place: number
|
||||
changelog: string
|
||||
wine: number | undefined
|
||||
category: number
|
||||
lastRevision: number
|
||||
download: number
|
||||
executable: string
|
||||
}
|
||||
Reference in new issue
Block a user