Merge branch 'message-sending-refactor-queue' into message-queue-test

This commit is contained in:
Vincent 2020-06-15 10:36:29 +10:00
commit fc45f1c438
2 changed files with 25 additions and 16 deletions

View file

@ -14,15 +14,15 @@ import {
} from '../messages/outgoing'; } from '../messages/outgoing';
import { PendingMessageCache } from './PendingMessageCache'; import { PendingMessageCache } from './PendingMessageCache';
import { import {
GroupUtils,
JobQueue, JobQueue,
SyncMessageUtils, SyncMessageUtils,
TypedEventEmitter, TypedEventEmitter,
GroupUtils,
} from '../utils'; } from '../utils';
import { PubKey } from '../types'; import { PubKey } from '../types';
import { MessageSender } from '.'; import { MessageSender } from '.';
import { SessionProtocol } from '../protocols'; import { SessionProtocol } from '../protocols';
import * as UserUtil from '../../util/user'; import { UserUtil } from '../../util';
export class MessageQueue implements MessageQueueInterface { export class MessageQueue implements MessageQueueInterface {
public readonly events: TypedEventEmitter<MessageQueueInterfaceEvents>; public readonly events: TypedEventEmitter<MessageQueueInterfaceEvents>;
@ -92,9 +92,12 @@ export class MessageQueue implements MessageQueueInterface {
// Closed groups // Closed groups
if (message instanceof ClosedGroupMessage) { if (message instanceof ClosedGroupMessage) {
// Get devices in closed group // Get devices in closed group
const recipients: Array<PubKey> = await GroupUtils.getGroupMembers( const groupPubKey = PubKey.from(message.groupId);
message.groupId if (!groupPubKey) {
); return false;
}
const recipients = await GroupUtils.getGroupMembers(groupPubKey);
await this.sendMessageToDevices(recipients, message); await this.sendMessageToDevices(recipients, message);
return true; return true;
@ -136,8 +139,7 @@ export class MessageQueue implements MessageQueueInterface {
public async processPending(device: PubKey) { public async processPending(device: PubKey) {
const messages = this.pendingMessageCache.getForDevice(device); const messages = this.pendingMessageCache.getForDevice(device);
// const isMediumGroup = messages.some(m => m instance of MediumGroupMessage) const isMediumGroup = GroupUtils.isMediumGroup(device);
const isMediumGroup = false;
const hasSession = SessionProtocol.hasSession(device); const hasSession = SessionProtocol.hasSession(device);
if (!isMediumGroup && !hasSession) { if (!isMediumGroup && !hasSession) {

View file

@ -1,14 +1,11 @@
import { getAllConversations } from '../../../js/modules/data'; import { ConversationController } from '../../window';
import { Whisper } from '../../window';
import { PubKey } from '../types'; import { PubKey } from '../types';
export async function getGroupMembers(groupId: string): Promise<Array<PubKey>> { export async function getGroupMembers(groupId: PubKey): Promise<Array<PubKey>> {
const conversations = await getAllConversations({ const groupConversation = ConversationController.get(groupId.key);
ConversationCollection: Whisper.ConversationCollection, const groupMembers = groupConversation
}); ? groupConversation.attributes.members
const groupConversation = conversations.find(c => c.id === groupId); : undefined;
const groupMembers = groupConversation.attributes.members;
if (!groupMembers) { if (!groupMembers) {
return []; return [];
@ -16,3 +13,13 @@ export async function getGroupMembers(groupId: string): Promise<Array<PubKey>> {
return groupMembers.map((member: string) => new PubKey(member)); return groupMembers.map((member: string) => new PubKey(member));
} }
export function isMediumGroup(groupId: PubKey): boolean {
const conversation = ConversationController.get(groupId.key);
if (!conversation) {
return false;
}
return Boolean(conversation.isMediumGroup());
}