add speed for download

This commit is contained in:
2025-11-05 12:21:42 -07:00
parent 129259cb74
commit 0b2e26470d
3 changed files with 16 additions and 4 deletions

View File

@@ -168,7 +168,10 @@ async fn download(
app.emit( app.emit(
"download-progress", "download-progress",
format!("{}:{:.8}:{}:{:.2}", &name, progress, downloaded, eta_secs), format!(
"{}:{:.8}:{}:{}:{:.2}",
&name, progress, downloaded, speed, eta_secs
),
) )
.unwrap(); .unwrap();
} }

View File

@@ -115,10 +115,11 @@ export default function RootLayout ({
let unlistenUninstalled: (() => void) | null = null let unlistenUninstalled: (() => void) | null = null
listen<string>('download-progress', event => { listen<string>('download-progress', event => {
const [versionName, progStr, totalSizeStr, etaSecsStr] = const [versionName, progStr, totalSizeStr, speedStr, etaSecsStr] =
event.payload.split(':') event.payload.split(':')
const prog = Number(progStr) const prog = Number(progStr)
const progBytes = Number(totalSizeStr) const progBytes = Number(totalSizeStr)
const speed = Number(speedStr)
const etaSecs = Number(etaSecsStr) const etaSecs = Number(etaSecsStr)
setDownloadProgress(prev => { setDownloadProgress(prev => {
const i = prev.findIndex(d => d.version === versionName) const i = prev.findIndex(d => d.version === versionName)
@@ -128,6 +129,7 @@ export default function RootLayout ({
...copy[i], ...copy[i],
progress: prog, progress: prog,
progressBytes: progBytes, progressBytes: progBytes,
speed,
etaSecs etaSecs
} }
return copy return copy
@@ -279,7 +281,7 @@ export default function RootLayout ({
const newDownloads = list.map( const newDownloads = list.map(
version => version =>
new DownloadProgress(version, 0, 0, false, true, false, false, 0) new DownloadProgress(version, 0, 0, false, true, false, false, 0, 0)
) )
setDownloadProgress(newDownloads) setDownloadProgress(newDownloads)
@@ -696,7 +698,13 @@ export default function RootLayout ({
maximumFractionDigits: 1 maximumFractionDigits: 1
} }
)}{' '} )}{' '}
(ETA: {formatEtaSmart(v.etaSecs)}) (ETA: {formatEtaSmart(v.etaSecs)}{' '}
&bull; Speed:{' '}
{prettyBytes(v.speed, {
minimumFractionDigits: 1,
maximumFractionDigits: 1
})}
/s)
</span> </span>
<ProgressBar <ProgressBar
progress={v.progress} progress={v.progress}

View File

@@ -7,6 +7,7 @@ export class DownloadProgress {
public queued: boolean, public queued: boolean,
public hash_checking: boolean, public hash_checking: boolean,
public finishing: boolean, public finishing: boolean,
public speed: number,
public etaSecs: number public etaSecs: number
) { } ) { }
} }