parent
00e7b317fc
commit
9bf19d4676
|
@ -5,12 +5,12 @@ import Reaction from './post-reaction';
|
||||||
import { pack as packUser } from './user';
|
import { pack as packUser } from './user';
|
||||||
|
|
||||||
const PostReaction = db.get<IPostReaction>('postReactions');
|
const PostReaction = db.get<IPostReaction>('postReactions');
|
||||||
PostReaction.createIndex(['userId', 'postId'], { unique: true });
|
|
||||||
export default PostReaction;
|
export default PostReaction;
|
||||||
|
|
||||||
export interface IPostReaction {
|
export interface IPostReaction {
|
||||||
_id: mongo.ObjectID;
|
_id: mongo.ObjectID;
|
||||||
createdAt: Date;
|
createdAt: Date;
|
||||||
|
deletedAt: Date;
|
||||||
postId: mongo.ObjectID;
|
postId: mongo.ObjectID;
|
||||||
userId: mongo.ObjectID;
|
userId: mongo.ObjectID;
|
||||||
reaction: string;
|
reaction: string;
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
import { MongoError } from 'mongodb';
|
|
||||||
import Post from '../../../models/post';
|
|
||||||
import Reaction from '../../../models/post-reaction';
|
|
||||||
import config from '../../../config';
|
|
||||||
import queue from '../../../queue';
|
|
||||||
|
|
||||||
export default async (actor, activity) => {
|
|
||||||
const prefix = config.url + '/posts';
|
|
||||||
const id = activity.object.id || activity.object;
|
|
||||||
let reaction;
|
|
||||||
|
|
||||||
if (!id.startsWith(prefix)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
const postId = id.slice(prefix.length);
|
|
||||||
|
|
||||||
const post = await Post.findOne({ _id: postId });
|
|
||||||
if (post === null) {
|
|
||||||
throw new Error();
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
reaction = await Reaction.insert({
|
|
||||||
createdAt: new Date(),
|
|
||||||
postId,
|
|
||||||
userId: actor._id,
|
|
||||||
reaction: 'pudding'
|
|
||||||
});
|
|
||||||
} catch (exception) {
|
|
||||||
// duplicate key error
|
|
||||||
if (exception instanceof MongoError && exception.code === 11000) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
throw exception;
|
|
||||||
}
|
|
||||||
|
|
||||||
await new Promise((resolve, reject) => {
|
|
||||||
queue.create('http', { type: 'like', reaction: reaction._id }).save(error => {
|
|
||||||
if (error) {
|
|
||||||
reject(error);
|
|
||||||
} else {
|
|
||||||
resolve(null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
|
@ -30,7 +30,7 @@ export default async (user, post) => {
|
||||||
const attributedTo = `${config.url}/@${user.username}`;
|
const attributedTo = `${config.url}/@${user.username}`;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: `${config.url}/posts/${post._id}}`,
|
id: `${attributedTo}/${post._id}`,
|
||||||
type: 'Note',
|
type: 'Note',
|
||||||
attributedTo,
|
attributedTo,
|
||||||
content: post.textHtml,
|
content: post.textHtml,
|
||||||
|
|
Loading…
Reference in a new issue