add RequestContactSyncMessage and RequestGroup and RequestConfiguration messages to new pipeline

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

@ -102,15 +102,9 @@ function getStaleDeviceIdsForNumber(number) {
}
const DebugMessageType = {
SESSION_RESET: 'session-reset',
SESSION_RESET_RECV: 'session-reset-received',
REQUEST_SYNC_SEND: 'request-sync-send',
CONTACT_SYNC_SEND: 'contact-sync-send',
CLOSED_GROUP_SYNC_SEND: 'closed-group-sync-send',
OPEN_GROUP_SYNC_SEND: 'open-group-sync-send',
DEVICE_UNPAIRING_SEND: 'device-unpairing-send',
};
function OutgoingMessage(

@ -529,57 +529,60 @@ MessageSender.prototype = {
});
},
sendRequestConfigurationSyncMessage(options) {
sendRequestConfigurationSyncMessage() {
const myNumber = textsecure.storage.user.getNumber();
const myDevice = textsecure.storage.user.getDeviceId();
if (myDevice !== 1 && myDevice !== '1') {
const request = new textsecure.protobuf.SyncMessage.Request();
request.type = textsecure.protobuf.SyncMessage.Request.Type.CONFIGURATION;
const syncMessage = this.createSyncMessage();
syncMessage.request = request;
const contentMessage = new textsecure.protobuf.Content();
contentMessage.syncMessage = syncMessage;
const { CONFIGURATION } = textsecure.protobuf.SyncMessage.Request.Type;
const user = libsession.Types.PubKey.from(myNumber);
const { RequestContactSyncMessage } = window.libsession.Messages.Outgoing;
const silent = true;
return this.sendIndividualProto(
myNumber,
contentMessage,
Date.now(),
silent,
options
);
const requestContactSyncMessage = new RequestContactSyncMessage({
timestamp: Date.now(),
reqestType: CONFIGURATION,
});
return libsession.getMessageQueue().send(user, requestContactSyncMessage);
}
return Promise.resolve();
},
sendRequestGroupSyncMessage(options) {
// Currently not in use under session (our device ID are always 1)
sendRequestGroupSyncMessage() {
const myNumber = textsecure.storage.user.getNumber();
const myDevice = textsecure.storage.user.getDeviceId();
if (myDevice !== 1 && myDevice !== '1') {
const request = new textsecure.protobuf.SyncMessage.Request();
request.type = textsecure.protobuf.SyncMessage.Request.Type.GROUPS;
const syncMessage = this.createSyncMessage();
syncMessage.request = request;
const contentMessage = new textsecure.protobuf.Content();
contentMessage.syncMessage = syncMessage;
const silent = true;
const debugMessageType =
window.textsecure.OutgoingMessage.DebugMessageType.REQUEST_SYNC_SEND;
const { GROUPS } = textsecure.protobuf.SyncMessage.Request.Type;
const user = libsession.Types.PubKey.from(myNumber);
const { RequestContactSyncMessage } = window.libsession.Messages.Outgoing;
return this.sendIndividualProto(
myNumber,
contentMessage,
Date.now(),
silent,
{ ...options, debugMessageType }
);
const requestContactSyncMessage = new RequestContactSyncMessage({
timestamp: Date.now(),
reqestType: GROUPS,
});
return libsession.getMessageQueue().send(user, requestContactSyncMessage);
}
return Promise.resolve();
},
// Currently not in use under session (our device ID are always 1)
async sendRequestContactSyncMessage() {
const myNumber = textsecure.storage.user.getNumber();
const myDevice = textsecure.storage.user.getDeviceId();
if (myDevice !== 1 && myDevice !== '1') {
const { CONTACTS } = textsecure.protobuf.SyncMessage.Request.Type;
const user = libsession.Types.PubKey.from(myNumber);
const { RequestContactSyncMessage } = window.libsession.Messages.Outgoing;
const requestContactSyncMessage = new RequestContactSyncMessage({
timestamp: Date.now(),
reqestType: CONTACTS,
});
return libsession.getMessageQueue().send(user, requestContactSyncMessage);
}
return Promise.resolve();
},
async sendContactSyncMessage(conversations) {
// If we havn't got a primaryDeviceKey then we are in the middle of pairing
// primaryDevicePubKey is set to our own number if we are the master device
@ -747,21 +750,6 @@ MessageSender.prototype = {
);
},
// Currently not in use under session (our device ID are always 1)
async sendRequestContactSyncMessage() {
const myNumber = textsecure.storage.user.getNumber();
const myDevice = textsecure.storage.user.getDeviceId();
if (myDevice !== 1 && myDevice !== '1') {
const user = libsession.Types.PubKey.from(myNumber);
const { RequestContactSyncMessage } = window.libsession.Messages.Outgoing;
const requestContactSyncMessage = new RequestContactSyncMessage(
{ timestamp: Date.now() }
);
await libsession.getMessageQueue().send(user, requestContactSyncMessage);
}
},
sendDeliveryReceipt(recipientId, timestamp, options) {
const myNumber = textsecure.storage.user.getNumber();
const myDevice = textsecure.storage.user.getDeviceId();

@ -1,23 +0,0 @@
import { SyncMessage } from './SyncMessage';
import { SignalService } from '../../../../../protobuf';
export abstract class RequestContactSyncMessage extends SyncMessage {
public ttl(): number {
return this.getDefaultTTL();
}
protected contentProto(): SignalService.Content {
return new SignalService.Content({
syncMessage: this.syncProto(),
});
}
protected syncProto(): SignalService.SyncMessage {
const { CONTACTS } = SignalService.SyncMessage.Request.Type;
const syncMessage = this.createSyncMessage();
syncMessage.request = new SignalService.SyncMessage.Request({type: CONTACTS});
return syncMessage;
}
}

@ -0,0 +1,35 @@
import { SyncMessage } from './SyncMessage';
import { SignalService } from '../../../../../protobuf';
import { MessageParams } from '../../Message';
interface RequestSyncMessageParams extends MessageParams {
requestType: SignalService.SyncMessage.Request.Type;
}
export abstract class RequestSyncMessage extends SyncMessage {
private readonly requestType: SignalService.SyncMessage.Request.Type;
constructor(params: RequestSyncMessageParams) {
super({ timestamp: params.timestamp, identifier: params.identifier });
this.requestType = params.requestType;
}
public ttl(): number {
return this.getDefaultTTL();
}
protected contentProto(): SignalService.Content {
return new SignalService.Content({
syncMessage: this.syncProto(),
});
}
protected syncProto(): SignalService.SyncMessage {
const syncMessage = this.createSyncMessage();
syncMessage.request = new SignalService.SyncMessage.Request({
type: this.requestType,
});
return syncMessage;
}
}

@ -20,7 +20,7 @@ export abstract class SyncMessage extends ContentMessage {
const buffer = crypto.randomBytes(1);
// tslint:disable-next-line: no-bitwise
const paddingLength = (new Uint8Array(buffer)[0] & 0x1FF) + 1;
const paddingLength = (new Uint8Array(buffer)[0] & 0x1ff) + 1;
// Generate a random padding buffer of the chosen size
syncMessage.padding = crypto.randomBytes(paddingLength);

Loading…
Cancel
Save