mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-27 09:06:15 +01:00
fix: #13076, allow pulling in of topics by their topic URL
fix: reapply fixes that were part of since-reverted 4fd7a9dc59
This commit is contained in:
@@ -27,11 +27,16 @@ Contexts.get = async (uid, id) => {
|
||||
}
|
||||
|
||||
try {
|
||||
({ context } = await activitypub.get('uid', uid, id, { headers }));
|
||||
if (!context) {
|
||||
({ id, type, context } = await activitypub.get('uid', uid, id, { headers }));
|
||||
if (acceptableTypes.includes(type)) { // is context
|
||||
activitypub.helpers.log(`[activitypub/context] ${id} is the context.`);
|
||||
return { context: id };
|
||||
} else if (!context) {
|
||||
activitypub.helpers.log(`[activitypub/context] ${id} contains no context.`);
|
||||
return false;
|
||||
}
|
||||
|
||||
// context provided; try to resolve it.
|
||||
({ type } = await activitypub.get('uid', uid, context));
|
||||
} catch (e) {
|
||||
if (e.code === 'ap_get_304') {
|
||||
@@ -98,9 +103,13 @@ Contexts.getItems = async (uid, id, options) => {
|
||||
const inputId = activitypub.helpers.isUri(options.input) ? options.input : options.input.id;
|
||||
const inCollection = Array.from(chain).map(p => p.pid).includes(inputId);
|
||||
if (!inCollection) {
|
||||
chain.add(activitypub.helpers.isUri(options.input) ?
|
||||
const item = activitypub.helpers.isUri(options.input) ?
|
||||
await parseString(uid, options.input) :
|
||||
await parseItem(uid, options.input));
|
||||
await parseItem(uid, options.input);
|
||||
|
||||
if (item) {
|
||||
chain.add(item);
|
||||
}
|
||||
}
|
||||
|
||||
return chain;
|
||||
|
||||
@@ -42,11 +42,11 @@ module.exports = function (app, middleware, controllers) {
|
||||
|
||||
app.get('/topic/:tid/:slug?', [...middlewares, middleware.assert.topic], controllers.activitypub.actors.topic);
|
||||
|
||||
app.get('/category/:cid/:slug?', [...middlewares, middleware.assert.category], controllers.activitypub.actors.category);
|
||||
app.get('/category/:cid/inbox', [...middlewares, middleware.assert.category], controllers.activitypub.getInbox);
|
||||
app.post('/category/:cid/inbox', [...inboxMiddlewares, middleware.assert.category, ...inboxMiddlewares], controllers.activitypub.postInbox);
|
||||
app.get('/category/:cid/outbox', [...middlewares, middleware.assert.category], controllers.activitypub.getCategoryOutbox);
|
||||
app.post('/category/:cid/outbox', [...middlewares, middleware.assert.category], controllers.activitypub.postOutbox);
|
||||
app.get('/category/:cid/:slug?', [...middlewares, middleware.assert.category], controllers.activitypub.actors.category);
|
||||
|
||||
app.get('/message/:mid', [...middlewares, middleware.assert.message], controllers.activitypub.actors.message);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user