fix: #13179, fix context resolution failure bug with frequency

This commit is contained in:
Julian Lam
2025-02-18 13:34:17 -05:00
parent de6e63bbd7
commit 6245e33d6e

View File

@@ -55,8 +55,20 @@ Contexts.getItems = async (uid, id, options) => {
options.root = true; options.root = true;
} }
activitypub.helpers.log(`[activitypub/context] Retrieving context ${id}`); // Page object instead of id
let { type, items, orderedItems, first, next } = await activitypub.get('uid', uid, id); let object;
if (!id && options.object) {
object = options.object;
} else {
activitypub.helpers.log(`[activitypub/context] Retrieving context/page ${id}`);
try {
object = await activitypub.get('uid', uid, id);
} catch (e) {
return false;
}
}
let { type, items, orderedItems, first, next } = object;
if (!acceptableTypes.includes(type)) { if (!acceptableTypes.includes(type)) {
return false; return false;
} }
@@ -84,14 +96,18 @@ Contexts.getItems = async (uid, id, options) => {
if (next) { if (next) {
activitypub.helpers.log('[activitypub/context] Fetching next page...'); activitypub.helpers.log('[activitypub/context] Fetching next page...');
const isUrl = activitypub.helpers.isUri(next);
Array Array
.from(await Contexts.getItems(uid, next, { .from(await Contexts.getItems(uid, isUrl && next, {
...options, ...options,
root: false, root: false,
object: !isUrl && next,
})) }))
.forEach((item) => { .forEach((item) => {
chain.add(item); chain.add(item);
}); });
return chain;
} }
// Handle special case where originating object is not actually part of the context collection // Handle special case where originating object is not actually part of the context collection