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 = { const DebugMessageType = {
SESSION_RESET: 'session-reset',
SESSION_RESET_RECV: 'session-reset-received',
REQUEST_SYNC_SEND: 'request-sync-send',
CONTACT_SYNC_SEND: 'contact-sync-send', CONTACT_SYNC_SEND: 'contact-sync-send',
CLOSED_GROUP_SYNC_SEND: 'closed-group-sync-send', CLOSED_GROUP_SYNC_SEND: 'closed-group-sync-send',
OPEN_GROUP_SYNC_SEND: 'open-group-sync-send', OPEN_GROUP_SYNC_SEND: 'open-group-sync-send',
DEVICE_UNPAIRING_SEND: 'device-unpairing-send',
}; };
function OutgoingMessage( function OutgoingMessage(

@ -529,57 +529,60 @@ MessageSender.prototype = {
}); });
}, },
sendRequestConfigurationSyncMessage(options) { sendRequestConfigurationSyncMessage() {
const myNumber = textsecure.storage.user.getNumber(); const myNumber = textsecure.storage.user.getNumber();
const myDevice = textsecure.storage.user.getDeviceId(); const myDevice = textsecure.storage.user.getDeviceId();
if (myDevice !== 1 && myDevice !== '1') { if (myDevice !== 1 && myDevice !== '1') {
const request = new textsecure.protobuf.SyncMessage.Request(); const { CONFIGURATION } = textsecure.protobuf.SyncMessage.Request.Type;
request.type = textsecure.protobuf.SyncMessage.Request.Type.CONFIGURATION; const user = libsession.Types.PubKey.from(myNumber);
const syncMessage = this.createSyncMessage(); const { RequestContactSyncMessage } = window.libsession.Messages.Outgoing;
syncMessage.request = request;
const contentMessage = new textsecure.protobuf.Content();
contentMessage.syncMessage = syncMessage;
const silent = true; const requestContactSyncMessage = new RequestContactSyncMessage({
return this.sendIndividualProto( timestamp: Date.now(),
myNumber, reqestType: CONFIGURATION,
contentMessage, });
Date.now(), return libsession.getMessageQueue().send(user, requestContactSyncMessage);
silent,
options
);
} }
return Promise.resolve(); 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 myNumber = textsecure.storage.user.getNumber();
const myDevice = textsecure.storage.user.getDeviceId(); const myDevice = textsecure.storage.user.getDeviceId();
if (myDevice !== 1 && myDevice !== '1') { if (myDevice !== 1 && myDevice !== '1') {
const request = new textsecure.protobuf.SyncMessage.Request(); const { GROUPS } = textsecure.protobuf.SyncMessage.Request.Type;
request.type = textsecure.protobuf.SyncMessage.Request.Type.GROUPS; const user = libsession.Types.PubKey.from(myNumber);
const syncMessage = this.createSyncMessage(); const { RequestContactSyncMessage } = window.libsession.Messages.Outgoing;
syncMessage.request = request;
const contentMessage = new textsecure.protobuf.Content();
contentMessage.syncMessage = syncMessage;
const silent = true;
const debugMessageType =
window.textsecure.OutgoingMessage.DebugMessageType.REQUEST_SYNC_SEND;
return this.sendIndividualProto( const requestContactSyncMessage = new RequestContactSyncMessage({
myNumber, timestamp: Date.now(),
contentMessage, reqestType: GROUPS,
Date.now(), });
silent, return libsession.getMessageQueue().send(user, requestContactSyncMessage);
{ ...options, debugMessageType }
);
} }
return Promise.resolve(); 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) { async sendContactSyncMessage(conversations) {
// If we havn't got a primaryDeviceKey then we are in the middle of pairing // 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 // 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) { sendDeliveryReceipt(recipientId, timestamp, options) {
const myNumber = textsecure.storage.user.getNumber(); const myNumber = textsecure.storage.user.getNumber();
const myDevice = textsecure.storage.user.getDeviceId(); 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); const buffer = crypto.randomBytes(1);
// tslint:disable-next-line: no-bitwise // 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 // Generate a random padding buffer of the chosen size
syncMessage.padding = crypto.randomBytes(paddingLength); syncMessage.padding = crypto.randomBytes(paddingLength);

Loading…
Cancel
Save