mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 16:02:26 +00:00
38 lines
858 B
JavaScript
38 lines
858 B
JavaScript
// js/utils/videoDeduper.js
|
||
|
||
/**
|
||
* Given an array of video objects, return only the newest (by created_at) for
|
||
* each videoRootId. If no videoRootId is present, treat the video’s own ID as
|
||
* its root.
|
||
*/
|
||
export function dedupeToNewestByRoot(videos) {
|
||
const map = new Map();
|
||
|
||
const normalizeTimestamp = (value) => {
|
||
const numeric = Number(value);
|
||
return Number.isFinite(numeric) ? numeric : -Infinity;
|
||
};
|
||
|
||
for (const vid of videos || []) {
|
||
if (!vid) {
|
||
continue;
|
||
}
|
||
const rootId = vid.videoRootId || vid.id;
|
||
if (!rootId) {
|
||
continue;
|
||
}
|
||
|
||
const existing = map.get(rootId);
|
||
if (
|
||
!existing ||
|
||
normalizeTimestamp(vid.created_at) > normalizeTimestamp(existing.created_at)
|
||
) {
|
||
map.set(rootId, vid);
|
||
}
|
||
}
|
||
|
||
return Array.from(map.values());
|
||
}
|
||
|
||
export default dedupeToNewestByRoot;
|