RequestGroupInfo via new pipeline

pull/1183/head
Audric Ackermann 5 years ago
parent 439ea09027
commit 34cec0be34
No known key found for this signature in database
GPG Key ID: 999F434D76324AD4

@ -1213,17 +1213,6 @@ MessageSender.prototype = {
});
},
requestGroupInfo(groupId, groupNumbers, options) {
const proto = new textsecure.protobuf.DataMessage();
proto.group = new textsecure.protobuf.GroupContext();
proto.group.id = stringToArrayBuffer(groupId);
proto.group.type = textsecure.protobuf.GroupContext.Type.REQUEST_INFO;
libloki.api.debug.logGroupRequestInfo(
`Sending GROUP_TYPES.REQUEST_INFO to: ${groupNumbers}, about groupId ${groupId}.`
);
return this.sendGroupProto(groupNumbers, proto, Date.now(), options);
},
requestSenderKeys(sender, groupId) {
const proto = new textsecure.protobuf.DataMessage();
const update = new textsecure.protobuf.MediumGroupUpdate();
@ -1341,7 +1330,6 @@ textsecure.MessageSender = function MessageSenderWrapper(username, password) {
this.addNumberToGroup = sender.addNumberToGroup.bind(sender);
this.setGroupName = sender.setGroupName.bind(sender);
this.setGroupAvatar = sender.setGroupAvatar.bind(sender);
this.requestGroupInfo = sender.requestGroupInfo.bind(sender);
this.requestSenderKeys = sender.requestSenderKeys.bind(sender);
this.leaveGroup = sender.leaveGroup.bind(sender);
this.sendSyncMessage = sender.sendSyncMessage.bind(sender);

@ -1,4 +1,6 @@
import { SignalService } from '../protobuf';
import { ClosedGroupRequestInfoMessage } from '../session/messages/outgoing/content/data/group/ClosedGroupRequestInfoMessage';
import { getMessageQueue } from '../session';
const _ = window.Lodash;
@ -112,9 +114,15 @@ export async function preprocessGroupMessage(
window.libloki.api.sendSessionRequestsToMembers(group.members);
} else if (newGroup) {
// We have an unknown group, we should request info from the sender
window.textsecure.messaging.requestGroupInfo(conversationId, [
primarySource,
]);
const requestInfo = {
timestamp: Date.now(),
groupId: conversationId,
};
const requestInfoMessage = new ClosedGroupRequestInfoMessage(
requestInfo
);
await getMessageQueue().sendToGroup(requestInfoMessage);
}
return false;
}

@ -41,7 +41,7 @@ export class TypingMessage extends ContentMessage {
const typingMessage = new SignalService.TypingMessage();
if (this.groupId) {
typingMessage.groupId = new Uint8Array(
StringUtils.encode(this.groupId, 'binary')
StringUtils.encode(this.groupId, 'utf8')
);
}
typingMessage.action = action;

@ -2,8 +2,9 @@ import { DataMessage } from '../DataMessage';
import { SignalService } from '../../../../../../protobuf';
import { TextEncoder } from 'util';
import { MessageParams } from '../../../Message';
import { StringUtils } from '../../../../../utils';
interface ClosedGroupMessageParams extends MessageParams {
export interface ClosedGroupMessageParams extends MessageParams {
groupId: string;
}
@ -21,7 +22,9 @@ export abstract class ClosedGroupMessage extends DataMessage {
protected abstract groupContextType(): SignalService.GroupContext.Type;
protected groupContext(): SignalService.GroupContext {
const id = new TextEncoder().encode(this.groupId);
const id = new Uint8Array(
StringUtils.encode(this.groupId, 'utf8')
);
const type = this.groupContextType();
return new SignalService.GroupContext({ id, type });

@ -0,0 +1,29 @@
import { SignalService } from '../../../../../../protobuf';
import { ClosedGroupMessage, ClosedGroupMessageParams } from './ClosedGroupMessage';
export class ClosedGroupRequestInfoMessage extends ClosedGroupMessage {
constructor(params: ClosedGroupMessageParams) {
super({
timestamp: params.timestamp,
identifier: params.identifier,
groupId: params.groupId,
});
}
public ttl(): number {
return this.getDefaultTTL();
}
protected groupContextType(): SignalService.GroupContext.Type {
return SignalService.GroupContext.Type.REQUEST_INFO;
}
protected dataProto(): SignalService.DataMessage {
const messageProto = new SignalService.DataMessage();
messageProto.group = this.groupContext();
return messageProto;
}
}
Loading…
Cancel
Save