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 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
@@ -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') {
|
||||||
|
|||||||
@@ -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
|
||||||
})}{' '}
|
})}{' '}
|
||||||
|
|||||||
@@ -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 () => {
|
||||||
|
|||||||
@@ -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
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user