diff --git a/libtextsecure/outgoing_message.js b/libtextsecure/outgoing_message.js index 821cfaf63..5f7804bce 100644 --- a/libtextsecure/outgoing_message.js +++ b/libtextsecure/outgoing_message.js @@ -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( diff --git a/libtextsecure/sendmessage.js b/libtextsecure/sendmessage.js index b1669d104..a71a376b3 100644 --- a/libtextsecure/sendmessage.js +++ b/libtextsecure/sendmessage.js @@ -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(); diff --git a/ts/session/messages/outgoing/content/sync/RequestContactSyncMessage.ts b/ts/session/messages/outgoing/content/sync/RequestContactSyncMessage.ts deleted file mode 100644 index 42364a12a..000000000 --- a/ts/session/messages/outgoing/content/sync/RequestContactSyncMessage.ts +++ /dev/null @@ -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; - } -} diff --git a/ts/session/messages/outgoing/content/sync/RequestSyncMessage.ts b/ts/session/messages/outgoing/content/sync/RequestSyncMessage.ts new file mode 100644 index 000000000..41a058ffe --- /dev/null +++ b/ts/session/messages/outgoing/content/sync/RequestSyncMessage.ts @@ -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; + } +} diff --git a/ts/session/messages/outgoing/content/sync/SyncMessage.ts b/ts/session/messages/outgoing/content/sync/SyncMessage.ts index 360f32344..dc1d12705 100644 --- a/ts/session/messages/outgoing/content/sync/SyncMessage.ts +++ b/ts/session/messages/outgoing/content/sync/SyncMessage.ts @@ -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);