mirror of
https://github.com/oxen-io/session-desktop.git
synced 2023-12-14 02:12:57 +01:00
Merge branch 'message-sending-refactor-queue' into message-queue-test
This commit is contained in:
commit
fc45f1c438
2 changed files with 25 additions and 16 deletions
|
@ -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) {
|
||||||
|
|
|
@ -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());
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue