INNER CODE UNIT · TypeScript
reconcileActiveDownloads
SurgeDM/Surge · extension/entrypoints/popup/store/index.ts:44
export function reconcileActiveDownloads(nextDownloads: DownloadStatus[]): void {
setActiveDownloads((prevDownloads) => {
const prevById = new Map(prevDownloads.map((download) => [download.id, download]));
const merged = nextDownloads.map((download) => {
const normalized = { ...download, speed: download.speed / MB };
const prev = prevById.get(download.id);
if (!prev) return normalized;
const next = { ...prev, ...normalized };
return sameDownloadStatus(prev, next) ? prev : next;
});
const hasChanged = merged.length !== prevDownloads.length
|| merged.some((download, index) => prevDownloads[index] !== download);
return hasChanged ? merged : prevDownloads;
});
}