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