diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2019-12-15 03:37:19 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2019-12-15 03:37:19 +0900 |
| commit | 3e85aad80a882abc764c13a0fc40e3333bb61c4b (patch) | |
| tree | c4ef1a407e5a714dda25cb907bc4d40acb89ec26 /src/server/api/common/read-messaging-message.ts | |
| parent | Fix #5637 (#5638) (diff) | |
| download | sharkey-3e85aad80a882abc764c13a0fc40e3333bb61c4b.tar.gz sharkey-3e85aad80a882abc764c13a0fc40e3333bb61c4b.tar.bz2 sharkey-3e85aad80a882abc764c13a0fc40e3333bb61c4b.zip | |
Implement Talk has read federation (#5636)
* Talk read
* fix
* 複数のRead ActivityはCollectionとして送るように
* あ
Diffstat (limited to 'src/server/api/common/read-messaging-message.ts')
| -rw-r--r-- | src/server/api/common/read-messaging-message.ts | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/server/api/common/read-messaging-message.ts b/src/server/api/common/read-messaging-message.ts index d18d8cd9d2..90510bb393 100644 --- a/src/server/api/common/read-messaging-message.ts +++ b/src/server/api/common/read-messaging-message.ts @@ -1,12 +1,17 @@ import { publishMainStream, publishGroupMessagingStream } from '../../../services/stream'; import { publishMessagingStream } from '../../../services/stream'; import { publishMessagingIndexStream } from '../../../services/stream'; -import { User } from '../../../models/entities/user'; +import { User, ILocalUser, IRemoteUser } from '../../../models/entities/user'; import { MessagingMessage } from '../../../models/entities/messaging-message'; import { MessagingMessages, UserGroupJoinings, Users } from '../../../models'; import { In } from 'typeorm'; import { IdentifiableError } from '../../../misc/identifiable-error'; import { UserGroup } from '../../../models/entities/user-group'; +import { toArray } from '../../../prelude/array'; +import { renderReadActivity } from '../../../remote/activitypub/renderer/read'; +import { renderActivity } from '../../../remote/activitypub/renderer'; +import { deliver } from '../../../queue'; +import orderedCollection from '../../../remote/activitypub/renderer/ordered-collection'; /** * Mark messages as read @@ -101,3 +106,17 @@ export async function readGroupMessagingMessage( publishMainStream(userId, 'readAllMessagingMessages'); } } + +export async function deliverReadActivity(user: ILocalUser, recipient: IRemoteUser, messages: MessagingMessage | MessagingMessage[]) { + messages = toArray(messages).filter(x => x.uri); + const contents = messages.map(x => renderReadActivity(user, x)); + + if (contents.length > 1) { + const collection = orderedCollection(null, contents.length, undefined, undefined, contents); + deliver(user, renderActivity(collection), recipient.inbox); + } else { + for (const content of contents) { + deliver(user, renderActivity(content), recipient.inbox); + } + } +} |