Fix video deduper timestamp comparison

This commit is contained in:
thePR0M3TH3AN committed 2025-10-27 09:57:12 -04:00
1 parent 46691b1578
commit d235839e22
2 files changed
+32 -1

No files matched your search

+9 -1
View File
@@ -8,6 +8,11 @@
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;
@@ -18,7 +23,10 @@ export function dedupeToNewestByRoot(videos) {
}
const existing = map.get(rootId);
if (!existing || vid.created_at > existing.created_at) {
if (
!existing ||
normalizeTimestamp(vid.created_at) > normalizeTimestamp(existing.created_at)
) {
map.set(rootId, vid);
}
}
+23
View File
@@ -0,0 +1,23 @@
import test from "node:test";
import assert from "node:assert/strict";
import { dedupeToNewestByRoot } from "../../js/utils/videoDeduper.js";
test("dedupeToNewestByRoot replaces entries with missing timestamps", () => {
const original = { id: "abc", created_at: undefined };
const newer = { id: "abc", created_at: 123 };
const [result] = dedupeToNewestByRoot([original, newer]);
assert.equal(result, newer);
});
test("dedupeToNewestByRoot replaces entries with non-numeric timestamps", () => {
const rootId = "root-1";
const invalid = { id: "old", videoRootId: rootId, created_at: "not-a-number" };
const newer = { id: "new", videoRootId: rootId, created_at: "456" };
const [result] = dedupeToNewestByRoot([invalid, newer]);
assert.equal(result, newer);
});