diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2018-04-05 01:59:10 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-04-05 01:59:10 +0900 |
| commit | 15b9bfb47182e8dd3baca50067db2255aeab0f72 (patch) | |
| tree | ac5ecbc95b15db6254eadbcea452716bd5b24d1f /src/remote | |
| parent | Merge pull request #1399 from akihikodaki/duplicate (diff) | |
| parent | Handle inReplyTo property (diff) | |
| download | sharkey-15b9bfb47182e8dd3baca50067db2255aeab0f72.tar.gz sharkey-15b9bfb47182e8dd3baca50067db2255aeab0f72.tar.bz2 sharkey-15b9bfb47182e8dd3baca50067db2255aeab0f72.zip | |
Merge pull request #1400 from akihikodaki/duplicate
Handle inReplyTo property
Diffstat (limited to 'src/remote')
| -rw-r--r-- | src/remote/activitypub/create.ts | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/remote/activitypub/create.ts b/src/remote/activitypub/create.ts index 31e9dba863..3bc0c66f35 100644 --- a/src/remote/activitypub/create.ts +++ b/src/remote/activitypub/create.ts @@ -48,11 +48,6 @@ class Creator { throw new Error(); } - const mediaIds = 'attachment' in note && - (await Promise.all(await this.create(resolver, note.attachment))) - .filter(media => media !== null && media.object.$ref === 'driveFiles.files') - .map(({ object }) => object.$id); - const { window } = new JSDOM(note.content); const mentions = []; const tags = []; @@ -71,13 +66,27 @@ class Creator { } } + const [mediaIds, reply] = await Promise.all([ + 'attachment' in note && this.create(resolver, note.attachment) + .then(collection => Promise.all(collection)) + .then(collection => collection + .filter(media => media !== null && media.object.$ref === 'driveFiles.files') + .map(({ object }: IResult) => object.$id)), + + 'inReplyTo' in note && this.create(resolver, note.inReplyTo) + .then(collection => Promise.all(collection.map(promise => promise.then(result => { + if (result !== null && result.object.$ref === 'posts') { + throw result.object; + } + }, () => { })))) + .then(() => null, ({ $id }) => Post.findOne({ _id: $id })) + ]); + const inserted = await createPost({ channelId: undefined, index: undefined, createdAt: new Date(note.published), mediaIds, - replyId: undefined, - repostId: undefined, poll: undefined, text: window.document.body.textContent, textHtml: note.content && createDOMPurify(window).sanitize(note.content), @@ -87,7 +96,7 @@ class Creator { geo: undefined, uri: note.id, tags - }, null, null, await Promise.all(mentions)); + }, reply, null, await Promise.all(mentions)); const promises = []; |