feat: preserve speed history and improve account setup
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
export interface DownloadSpeedHistoryState {
|
||||
history: number[];
|
||||
display: number;
|
||||
}
|
||||
|
||||
export const DOWNLOAD_SPEED_MAX_SAMPLES = 160;
|
||||
|
||||
export function updateDownloadSpeedHistory(
|
||||
state: DownloadSpeedHistoryState,
|
||||
target: number,
|
||||
maxSamples = DOWNLOAD_SPEED_MAX_SAMPLES
|
||||
): DownloadSpeedHistoryState {
|
||||
const safeTarget = Math.max(0, Number.isFinite(target) ? target : 0);
|
||||
const alpha = safeTarget > state.display ? 0.45 : 0.12;
|
||||
let display = state.display + (safeTarget - state.display) * alpha;
|
||||
if (display < 1) {
|
||||
display = 0;
|
||||
}
|
||||
const history = [...state.history, display];
|
||||
if (history.length > maxSamples) {
|
||||
history.splice(0, history.length - maxSamples);
|
||||
}
|
||||
return { history, display };
|
||||
}
|
||||
Reference in New Issue
Block a user