mirror of
https://github.com/svemagie/indiekit-endpoint-activitypub.git
synced 2026-04-02 15:44:58 +02:00
fix: status lookup fails due to published date format mismatch
findTimelineItemById decoded the cursor (ms-since-epoch) back to an ISO date via toISOString() which produces "2026-03-21T15:33:50.000Z". But the stored published dates lack the .000Z milliseconds suffix — they're "2026-03-21T15:33:50Z". The exact string match failed for every single status, breaking /statuses/:id, /statuses/:id/context, and all interaction endpoints (favourite, boost, bookmark, delete). Fix: try both formats — with .000Z first, then without.
This commit is contained in:
@@ -567,8 +567,17 @@ async function findTimelineItemById(collection, id) {
|
||||
// Try cursor-based lookup first (published date from ms-since-epoch)
|
||||
const publishedDate = decodeCursor(id);
|
||||
if (publishedDate) {
|
||||
const item = await collection.findOne({ published: publishedDate });
|
||||
// Try exact match first (with .000Z suffix from toISOString)
|
||||
let item = await collection.findOne({ published: publishedDate });
|
||||
if (item) return item;
|
||||
|
||||
// Try without milliseconds — stored dates often lack .000Z
|
||||
// e.g., "2026-03-21T15:33:50Z" vs "2026-03-21T15:33:50.000Z"
|
||||
const withoutMs = publishedDate.replace(/\.000Z$/, "Z");
|
||||
if (withoutMs !== publishedDate) {
|
||||
item = await collection.findOne({ published: withoutMs });
|
||||
if (item) return item;
|
||||
}
|
||||
}
|
||||
|
||||
// Fall back to ObjectId lookup (legacy IDs)
|
||||
|
||||
Reference in New Issue
Block a user