fix: resolveLocalId to return null values instead of throwing for no resolution

This commit is contained in:
Julian Lam
2024-02-09 11:15:03 -05:00
parent ac56289fa2
commit 11dba85d0a
2 changed files with 10 additions and 4 deletions

View File

@@ -107,15 +107,15 @@ Helpers.resolveLocalId = async (input) => {
} }
} }
throw new Error('[[error:activitypub.invalid-id]]'); return { type: null, id: null };
} else {
throw new Error('[[error:activitypub.invalid-id]]');
} }
return { type: null, id: null };
} else if (input.indexOf('@') !== -1) { // Webfinger } else if (input.indexOf('@') !== -1) { // Webfinger
const [slug] = input.replace(/^acct:/, '').split('@'); const [slug] = input.replace(/^acct:/, '').split('@');
const uid = await user.getUidByUserslug(slug); const uid = await user.getUidByUserslug(slug);
return { type: 'user', id: uid }; return { type: 'user', id: uid };
} }
throw new Error('[[error:activitypub.invalid-id]]'); return { type: null, id: null };
}; };

View File

@@ -53,6 +53,12 @@ Notes.getParentChain = async (uid, input) => {
const chain = new Set(); const chain = new Set();
const traverse = async (uid, id) => { const traverse = async (uid, id) => {
// Handle remote reference to local post
const { type, id: localId } = await activitypub.helpers.resolveLocalId(id);
if (type === 'post' && localId) {
return traverse(uid, localId);
}
const exists = await db.exists(`post:${id}`); const exists = await db.exists(`post:${id}`);
if (exists) { if (exists) {
const postData = await posts.getPostData(id); const postData = await posts.getPostData(id);