Skip to content
Snippets Groups Projects
Commit 02bb99ac authored by syuilo's avatar syuilo
Browse files

他のMisskeyインスタンスにリアクション情報を伝えるように

parent 0b99483c
No related branches found
No related tags found
No related merge requests found
import * as mongo from 'mongodb';
import $ from 'cafy';
import deepcopy = require('deepcopy');
import db from '../db/mongodb';
import Reaction from './note-reaction';
......@@ -16,6 +17,18 @@ export interface INoteReaction {
reaction: string;
}
export const validateReaction = $().string().or([
'like',
'love',
'laugh',
'hmm',
'surprise',
'congrats',
'angry',
'confused',
'pudding'
]);
/**
* NoteReactionを物理削除します
*/
......
......@@ -3,6 +3,7 @@ import Note from '../../../models/note';
import { IRemoteUser } from '../../../models/user';
import { ILike } from '../type';
import create from '../../../services/note/reaction/create';
import { validateReaction } from '../../../models/note-reaction';
export default async (actor: IRemoteUser, activity: ILike) => {
const id = typeof activity.object == 'string' ? activity.object : activity.object.id;
......@@ -17,5 +18,14 @@ export default async (actor: IRemoteUser, activity: ILike) => {
throw new Error();
}
await create(actor, note, 'pudding');
let reaction = 'pudding';
// 他のMisskeyインスタンスからのリアクション
if (activity._misskey_reaction) {
if (validateReaction.ok(activity._misskey_reaction)) {
reaction = activity._misskey_reaction;
}
}
await create(actor, note, reaction);
};
import config from '../../../config';
import { ILocalUser } from '../../../models/user';
export default (user: ILocalUser, note) => ({
export default (user: ILocalUser, note, reaction: string) => ({
type: 'Like',
actor: `${config.url}/users/${user._id}`,
object: note.uri ? note.uri : `${config.url}/notes/${note._id}`
object: note.uri ? note.uri : `${config.url}/notes/${note._id}`,
_misskey_reaction: reaction
});
......@@ -82,6 +82,7 @@ export interface IAccept extends IActivity {
export interface ILike extends IActivity {
type: 'Like';
_misskey_reaction: string;
}
export interface IAnnounce extends IActivity {
......
......@@ -4,6 +4,7 @@
import $ from 'cafy';
import Note from '../../../../../models/note';
import create from '../../../../../services/note/reaction/create';
import { validateReaction } from '../../../../../models/note-reaction';
/**
* React to a note
......@@ -14,17 +15,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
if (noteIdErr) return rej('invalid noteId param');
// Get 'reaction' parameter
const [reaction, reactionErr] = $(params.reaction).string().or([
'like',
'love',
'laugh',
'hmm',
'surprise',
'congrats',
'angry',
'confused',
'pudding'
]).$;
const [reaction, reactionErr] = $(params.reaction).string().pipe(validateReaction.ok).$;
if (reactionErr) return rej('invalid reaction param');
// Fetch reactee
......
......@@ -87,7 +87,7 @@ export default async (user: IUser, note: INote, reaction: string) => new Promise
//#region 配信
// リアクターがローカルユーザーかつリアクション対象がリモートユーザーの投稿なら配送
if (isLocalUser(user) && isRemoteUser(note._user)) {
const content = pack(renderLike(user, note));
const content = pack(renderLike(user, note, reaction));
deliver(user, content, note._user.inbox);
}
//#endregion
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment