Implement Talk has read federation (#5636)
* Talk read * fix * 複数のRead ActivityはCollectionとして送るように * あ
This commit is contained in:
parent
648be3005f
commit
3e85aad80a
12 changed files with 108 additions and 10 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue