summaryrefslogtreecommitdiff
path: root/src/remote/activitypub/models/note.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/remote/activitypub/models/note.ts')
-rw-r--r--src/remote/activitypub/models/note.ts17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/remote/activitypub/models/note.ts b/src/remote/activitypub/models/note.ts
index bee2d943a0..dd0083340c 100644
--- a/src/remote/activitypub/models/note.ts
+++ b/src/remote/activitypub/models/note.ts
@@ -14,6 +14,8 @@ import Emoji, { IEmoji } from '../../../models/emoji';
import { ITag } from './tag';
import { toUnicode } from 'punycode';
import { unique, concat, difference } from '../../../prelude/array';
+import { extractPollFromQuestion } from './question';
+import vote from '../../../services/note/polls/vote';
const log = debug('misskey:activitypub');
@@ -110,6 +112,16 @@ export async function createNote(value: any, resolver?: Resolver, silent = false
// テキストのパース
const text = note._misskey_content ? note._misskey_content : htmlToMFM(note.content);
+ // vote
+ if (reply && reply.poll && text != null) {
+ const m = text.match(/([0-9])$/);
+ if (m) {
+ log(`vote from AP: actor=${actor.username}@${actor.host}, note=${note.id}, choice=${m[0]}`);
+ await vote(actor, reply, Number(m[1]));
+ return null;
+ }
+ }
+
const emojis = await extractEmojis(note.tag, actor.host).catch(e => {
console.log(`extractEmojis: ${e}`);
return [] as IEmoji[];
@@ -117,6 +129,9 @@ export async function createNote(value: any, resolver?: Resolver, silent = false
const apEmojis = emojis.map(emoji => emoji.name);
+ const questionUri = note._misskey_question;
+ const poll = questionUri ? await extractPollFromQuestion(questionUri).catch(() => undefined) : undefined;
+
// ユーザーの情報が古かったらついでに更新しておく
if (actor.lastFetchedAt == null || Date.now() - actor.lastFetchedAt.getTime() > 1000 * 60 * 60 * 24) {
updatePerson(note.attributedTo);
@@ -137,6 +152,8 @@ export async function createNote(value: any, resolver?: Resolver, silent = false
apMentions,
apHashtags,
apEmojis,
+ questionUri,
+ poll,
uri: note.id
}, silent);
}