expirationTimerUpdate uses new sending pipeline

pull/1183/head
Audric Ackermann 5 years ago
parent ff7ca5a0d5
commit 6e1258e3d1
No known key found for this signature in database
GPG Key ID: 999F434D76324AD4

@ -1681,7 +1681,6 @@
if (this.get('profileSharing')) {
profileKey = storage.get('profileKey');
}
let promise;
if (this.isMe()) {
const flags =
@ -1699,29 +1698,28 @@
);
return message.sendSyncMessageOnly(dataMessage);
}
const expireUpdate = {
timestamp: message.get('sent_at'),
expireTimer,
profileKey,
};
if (this.get('type') === 'private') {
promise = textsecure.messaging.sendExpirationTimerUpdateToNumber(
this.get('id'),
expireTimer,
message.get('sent_at'),
profileKey,
{}
);
} else {
promise = textsecure.messaging.sendExpirationTimerUpdateToGroup(
this.get('id'),
this.getRecipients(),
expireTimer,
message.get('sent_at'),
profileKey,
{}
);
}
const expirationTimerMessage = new new libsession.Messages.Outgoing.ExpirationTimerUpdateMessage(
expireUpdate
)();
await message.send(this.wrapSend(promise));
await libsession
.getMessageQueue()
.sendUsingMultiDevice(this.get('id'), expirationTimerMessage);
} else {
expireUpdate.groupId = this.get('id');
const expirationTimerMessage = new new libsession.Messages.Outgoing.ExpirationTimerUpdateMessage(
expireUpdate
)();
return message;
await libsession.getMessageQueue().sendToGroup(expirationTimerMessage);
}
},
isSearchable() {
@ -1950,7 +1948,7 @@
};
const quitGroupMessage = new new libsession.Messages.Outgoing.ClosedGroupLeaveMessage(
quitGroup
);
)();
await libsession.getMessageQueue().sendToGroup(quitGroupMessage);

@ -1222,64 +1222,6 @@ MessageSender.prototype = {
textsecure.messaging.updateMediumGroup([sender], proto);
},
async sendExpirationTimerUpdateToGroup(
groupId,
groupNumbers,
expireTimer,
timestamp,
profileKey,
options
) {
// We always assume that only primary device is a member in the group
const primaryDeviceKey =
window.storage.get('primaryDevicePubKey') ||
textsecure.storage.user.getNumber();
const numbers = groupNumbers.filter(number => number !== primaryDeviceKey);
const attrs = {
recipients: numbers,
timestamp,
needsSync: true,
expireTimer,
profileKey,
flags: textsecure.protobuf.DataMessage.Flags.EXPIRATION_TIMER_UPDATE,
group: {
id: groupId,
type: textsecure.protobuf.GroupContext.Type.DELIVER,
},
};
if (numbers.length === 0) {
return Promise.resolve({
successfulNumbers: [],
failoverNumbers: [],
errors: [],
unidentifiedDeliveries: [],
dataMessage: await this.getMessageProtoObj(attrs),
});
}
return this.sendMessage(attrs, options);
},
sendExpirationTimerUpdateToNumber(
number,
expireTimer,
timestamp,
profileKey,
options
) {
return this.sendMessage(
{
recipients: [number],
timestamp,
needsSync: true,
expireTimer,
profileKey,
flags: textsecure.protobuf.DataMessage.Flags.EXPIRATION_TIMER_UPDATE,
},
options
);
},
makeProxiedRequest(url, options) {
return this.server.makeProxiedRequest(url, options);
},
@ -1292,13 +1234,6 @@ window.textsecure = window.textsecure || {};
textsecure.MessageSender = function MessageSenderWrapper(username, password) {
const sender = new MessageSender(username, password);
this.sendExpirationTimerUpdateToNumber = sender.sendExpirationTimerUpdateToNumber.bind(
sender
);
this.sendExpirationTimerUpdateToGroup = sender.sendExpirationTimerUpdateToGroup.bind(
sender
);
this.sendRequestGroupSyncMessage = sender.sendRequestGroupSyncMessage.bind(
sender
);

@ -118,11 +118,8 @@ export async function preprocessGroupMessage(
timestamp: Date.now(),
groupId: conversationId,
};
const requestInfoMessage = new ClosedGroupRequestInfoMessage(
requestInfo
);
const requestInfoMessage = new ClosedGroupRequestInfoMessage(requestInfo);
await getMessageQueue().sendToGroup(requestInfoMessage);
}
return false;
}

@ -0,0 +1,49 @@
import { ContentMessage } from '../ContentMessage';
import { SignalService } from '../../../../../protobuf';
import { MessageParams } from '../../Message';
import { StringUtils } from '../../../../utils';
import { DataMessage } from './DataMessage';
interface ExpirationTimerUpdateMessageParams extends MessageParams {
groupId?: string;
expireTimer: number | null;
profileKey?: Uint8Array;
}
export class ExpirationTimerUpdateMessage extends DataMessage {
private readonly groupId?: string;
private readonly expireTimer: number | null;
private readonly profileKey?: Uint8Array;
constructor(params: ExpirationTimerUpdateMessageParams) {
super({ timestamp: params.timestamp, identifier: params.identifier });
this.groupId = params.groupId;
this.expireTimer = params.expireTimer;
this.profileKey = params.profileKey;
}
public ttl(): number {
return this.getDefaultTTL();
}
protected dataProto(): SignalService.DataMessage {
const data = new SignalService.DataMessage();
const groupMessage = new SignalService.GroupContext();
if (this.groupId) {
groupMessage.id = new Uint8Array(
StringUtils.encode(this.groupId, 'utf8')
);
groupMessage.type = SignalService.GroupContext.Type.DELIVER;
}
data.flags = SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE;
if (this.expireTimer) {
data.expireTimer = this.expireTimer;
}
if (this.profileKey) {
data.profileKey = this.profileKey;
}
return data;
}
}

@ -1,9 +1,10 @@
import { SignalService } from '../../../../../../protobuf';
import { ClosedGroupMessage, ClosedGroupMessageParams } from './ClosedGroupMessage';
import {
ClosedGroupMessage,
ClosedGroupMessageParams,
} from './ClosedGroupMessage';
export class ClosedGroupLeaveMessage extends ClosedGroupMessage {
constructor(params: ClosedGroupMessageParams) {
super({
timestamp: params.timestamp,

@ -22,9 +22,7 @@ export abstract class ClosedGroupMessage extends DataMessage {
protected abstract groupContextType(): SignalService.GroupContext.Type;
protected groupContext(): SignalService.GroupContext {
const id = new Uint8Array(
StringUtils.encode(this.groupId, 'utf8')
);
const id = new Uint8Array(StringUtils.encode(this.groupId, 'utf8'));
const type = this.groupContextType();
return new SignalService.GroupContext({ id, type });

@ -1,9 +1,10 @@
import { SignalService } from '../../../../../../protobuf';
import { ClosedGroupMessage, ClosedGroupMessageParams } from './ClosedGroupMessage';
import {
ClosedGroupMessage,
ClosedGroupMessageParams,
} from './ClosedGroupMessage';
export class ClosedGroupRequestInfoMessage extends ClosedGroupMessage {
constructor(params: ClosedGroupMessageParams) {
super({
timestamp: params.timestamp,

Loading…
Cancel
Save