summaryrefslogtreecommitdiff
path: root/src/remote/activitypub/models
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2020-02-06 17:11:02 +0900
committerGitHub <noreply@github.com>2020-02-06 17:11:02 +0900
commitbd6de0e20456008e86927539f07ba20989c0d9ca (patch)
tree83838aeb6ae2836eeae53925b65cd3efca3b8395 /src/remote/activitypub/models
parentUpdate CHANGELOG.md (diff)
downloadsharkey-bd6de0e20456008e86927539f07ba20989c0d9ca.tar.gz
sharkey-bd6de0e20456008e86927539f07ba20989c0d9ca.tar.bz2
sharkey-bd6de0e20456008e86927539f07ba20989c0d9ca.zip
Fix #5848 (#5853)
Diffstat (limited to 'src/remote/activitypub/models')
-rw-r--r--src/remote/activitypub/models/note.ts19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/remote/activitypub/models/note.ts b/src/remote/activitypub/models/note.ts
index caf27eb5a6..3bd6fc679b 100644
--- a/src/remote/activitypub/models/note.ts
+++ b/src/remote/activitypub/models/note.ts
@@ -15,7 +15,7 @@ import { apLogger } from '../logger';
import { DriveFile } from '../../../models/entities/drive-file';
import { deliverQuestionUpdate } from '../../../services/note/polls/update';
import { extractDbHost, toPuny } from '../../../misc/convert-host';
-import { Notes, Emojis, Polls } from '../../../models';
+import { Notes, Emojis, Polls, MessagingMessages } from '../../../models';
import { Note } from '../../../models/entities/note';
import { IObject, getOneApId, getApId, validPost, ICreate, isCreate, IPost } from '../type';
import { Emoji } from '../../../models/entities/emoji';
@@ -129,6 +129,8 @@ export async function createNote(value: string | IObject, resolver?: Resolver, s
}
}
+ let isTalk = note._misskey_talk && visibility === 'specified';
+
const apHashtags = await extractHashtags(note.tag);
// 添付ファイル
@@ -153,7 +155,18 @@ export async function createNote(value: string | IObject, resolver?: Resolver, s
} else {
return x;
}
- }).catch(e => {
+ }).catch(async e => {
+ // トークだったらinReplyToのエラーは無視
+ const uri = getApId(note.inReplyTo);
+ if (uri.startsWith(config.url + '/')) {
+ const id = uri.split('/').pop();
+ const talk = await MessagingMessages.findOne(id);
+ if (talk) {
+ isTalk = true;
+ return null;
+ }
+ }
+
logger.warn(`Error in inReplyTo ${note.inReplyTo} - ${e.statusCode || e}`);
throw e;
})
@@ -250,7 +263,7 @@ export async function createNote(value: string | IObject, resolver?: Resolver, s
if (actor.uri) updatePerson(actor.uri);
}
- if (note._misskey_talk && visibility === 'specified') {
+ if (isTalk) {
for (const recipient of visibleUsers) {
await createMessage(actor, recipient, undefined, text || undefined, (files && files.length > 0) ? files[0] : null, object.id);
return null;