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)
|
// Try cursor-based lookup first (published date from ms-since-epoch)
|
||||||
const publishedDate = decodeCursor(id);
|
const publishedDate = decodeCursor(id);
|
||||||
if (publishedDate) {
|
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;
|
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)
|
// Fall back to ObjectId lookup (legacy IDs)
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@rmdes/indiekit-endpoint-activitypub",
|
"name": "@rmdes/indiekit-endpoint-activitypub",
|
||||||
"version": "3.6.9",
|
"version": "3.7.0",
|
||||||
"description": "ActivityPub federation endpoint for Indiekit via Fedify. Adds full fediverse support: actor, inbox, outbox, followers, following, syndication, and Mastodon migration.",
|
"description": "ActivityPub federation endpoint for Indiekit via Fedify. Adds full fediverse support: actor, inbox, outbox, followers, following, syndication, and Mastodon migration.",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"indiekit",
|
"indiekit",
|
||||||
|
|||||||
Reference in New Issue
Block a user