diff --git a/js/background.js b/js/background.js index 8fbee9684b1b..e39ff252bfd2 100644 --- a/js/background.js +++ b/js/background.js @@ -272,7 +272,7 @@ messageReceiver.addEventListener('error', onError); messageReceiver.addEventListener('empty', onEmpty); messageReceiver.addEventListener('progress', onProgress); - messageReceiver.addEventListener('settings', onSettings); + messageReceiver.addEventListener('configuration', onConfiguration); window.textsecure.messaging = new textsecure.MessageSender( SERVER_URL, USERNAME, PASSWORD, CDN_URL @@ -351,12 +351,8 @@ view.onProgress(count); } } - function onSettings(ev) { - if (ev.settings.readReceipts) { - storage.put('read-receipt-setting', true); - } else { - storage.put('read-receipt-setting', false); - } + function onConfiguration(ev) { + storage.put('read-receipt-setting', ev.configuration.readReceipts); } function onContactReceived(ev) { diff --git a/libtextsecure/message_receiver.js b/libtextsecure/message_receiver.js index 35c8c15086a4..582084ffd159 100644 --- a/libtextsecure/message_receiver.js +++ b/libtextsecure/message_receiver.js @@ -558,23 +558,23 @@ MessageReceiver.prototype.extend({ handleReceiptMessage: function(envelope, receiptMessage) { var results = []; if (receiptMessage.type === textsecure.protobuf.ReceiptMessage.Type.DELIVERY) { - for (var i = 0; i < receiptMessage.timestamps.length; ++i) { + for (var i = 0; i < receiptMessage.timestamp.length; ++i) { var ev = new Event('delivery'); ev.confirm = this.removeFromCache.bind(this, envelope); ev.deliveryReceipt = { - timestamp : receiptMessage.timestamps[i].toNumber(), + timestamp : receiptMessage.timestamp[i].toNumber(), source : envelope.source, sourceDevice : envelope.sourceDevice }; results.push(this.dispatchAndWait(ev)); } } else if (receiptMessage.type === textsecure.protobuf.ReceiptMessage.Type.READ) { - for (var i = 0; i < receiptMessage.timestamps.length; ++i) { + for (var i = 0; i < receiptMessage.timestamp.length; ++i) { var ev = new Event('read'); ev.confirm = this.removeFromCache.bind(this, envelope); ev.timestamp = envelope.timestamp.toNumber(); ev.read = { - timestamp : receiptMessage.timestamps[i].toNumber(), + timestamp : receiptMessage.timestamp[i].toNumber(), reader : envelope.source } results.push(this.dispatchAndWait(ev)); @@ -626,17 +626,17 @@ MessageReceiver.prototype.extend({ return this.handleRead(envelope, syncMessage.read); } else if (syncMessage.verified) { return this.handleVerified(envelope, syncMessage.verified); - } else if (syncMessage.settings) { - return this.handleSettings(envelope, syncMessage.settings); + } else if (syncMessage.configuration) { + return this.handleConfiguration(envelope, syncMessage.configuration); } else { throw new Error('Got empty SyncMessage'); } }, - handleSettings: function(envelope, settings) { - var ev = new Event('settings'); + handleConfiguration: function(envelope, configuration) { + var ev = new Event('configuration'); ev.confirm = this.removeFromCache.bind(this, envelope); - ev.settings = { - readReceipts: settings.readReceipts + ev.configuration = { + readReceipts: configuration.readReceipts }; return this.dispatchAndWait(ev); }, diff --git a/libtextsecure/protobufs.js b/libtextsecure/protobufs.js index 9f578ec29c22..9f7088815c0d 100644 --- a/libtextsecure/protobufs.js +++ b/libtextsecure/protobufs.js @@ -11,7 +11,7 @@ console.log(text); throw error; } - var protos = result.build('textsecure'); + var protos = result.build('signalservice'); if (!protos) { var text = 'Error loading protos from ' + filename + ' (root: ' + window.PROTO_ROOT + ')'; console.log(text); @@ -23,7 +23,7 @@ }); }; - loadProtoBufs('IncomingPushMessageSignal.proto'); + loadProtoBufs('SignalService.proto'); loadProtoBufs('SubProtocol.proto'); loadProtoBufs('DeviceMessages.proto'); })(); diff --git a/libtextsecure/sendmessage.js b/libtextsecure/sendmessage.js index c3a7762ac30a..34072020f1a2 100644 --- a/libtextsecure/sendmessage.js +++ b/libtextsecure/sendmessage.js @@ -388,7 +388,7 @@ MessageSender.prototype = { sendReadReceipts: function(sender, timestamps) { var receiptMessage = new textsecure.protobuf.ReceiptMessage(); receiptMessage.type = textsecure.protobuf.ReceiptMessage.Type.READ; - receiptMessage.timestamps = timestamps; + receiptMessage.timestamp = timestamps; var contentMessage = new textsecure.protobuf.Content(); contentMessage.receiptMessage = receiptMessage; diff --git a/protos/DeviceMessages.proto b/protos/DeviceMessages.proto index d63739ca5d17..3e96e5f5827c 100644 --- a/protos/DeviceMessages.proto +++ b/protos/DeviceMessages.proto @@ -1,4 +1,4 @@ -package textsecure; +package signalservice; message ProvisioningUuid { optional string uuid = 1; diff --git a/protos/IncomingPushMessageSignal.proto b/protos/SignalService.proto similarity index 78% rename from protos/IncomingPushMessageSignal.proto rename to protos/SignalService.proto index 75858caa579d..1110c36058ad 100644 --- a/protos/IncomingPushMessageSignal.proto +++ b/protos/SignalService.proto @@ -1,7 +1,8 @@ -package textsecure; +// Source: https://github.com/signalapp/libsignal-service-java/blob/4684a49b2ed8f32be619e0d0eea423626b6cb2cb/protobuf/SignalService.proto +package signalservice; -option java_package = "org.whispersystems.textsecure.internal.push"; -option java_outer_classname = "TextSecureProtos"; +option java_package = "org.whispersystems.signalservice.internal.push"; +option java_outer_classname = "SignalServiceProtos"; message Envelope { enum Type { @@ -22,40 +23,13 @@ message Envelope { } message Content { - optional DataMessage dataMessage = 1; - optional SyncMessage syncMessage = 2; - optional CallMessage callMessage = 3; - optional NullMessage nullMessage = 4; + optional DataMessage dataMessage = 1; + optional SyncMessage syncMessage = 2; + optional CallMessage callMessage = 3; + optional NullMessage nullMessage = 4; optional ReceiptMessage receiptMessage = 5; } -message ReceiptMessage { - enum Type { - DELIVERY = 0; - READ = 1; - } - - optional Type type = 1; - repeated uint64 timestamps = 2; -} - -message NullMessage { - optional bytes padding = 1; -} - -message Verified { - enum State { - DEFAULT = 0; - VERIFIED = 1; - UNVERIFIED = 2; - } - - optional string destination = 1; - optional bytes identityKey = 2; - optional State state = 3; - optional bytes nullMessage = 4; -} - message CallMessage { message Offer { optional uint64 id = 1; @@ -92,7 +66,7 @@ message CallMessage { message DataMessage { enum Flags { - END_SESSION = 1; + END_SESSION = 1; EXPIRATION_TIMER_UPDATE = 2; PROFILE_KEY_UPDATE = 4; } @@ -103,6 +77,34 @@ message DataMessage { optional uint32 flags = 4; optional uint32 expireTimer = 5; optional bytes profileKey = 6; + optional uint64 timestamp = 7; +} + +message NullMessage { + optional bytes padding = 1; +} + +message ReceiptMessage { + enum Type { + DELIVERY = 0; + READ = 1; + } + + optional Type type = 1; + repeated uint64 timestamp = 2; +} + +message Verified { + enum State { + DEFAULT = 0; + VERIFIED = 1; + UNVERIFIED = 2; + } + + optional string destination = 1; + optional bytes identityKey = 2; + optional State state = 3; + optional bytes nullMessage = 4; } message SyncMessage { @@ -115,7 +117,7 @@ message SyncMessage { message Contacts { optional AttachmentPointer blob = 1; - optional bool isComplete = 2 [default = false]; + optional bool complete = 2 [default = false]; } message Groups { @@ -143,19 +145,19 @@ message SyncMessage { optional uint64 timestamp = 2; } - message Settings { + message Configuration { optional bool readReceipts = 1; } - optional Sent sent = 1; - optional Contacts contacts = 2; - optional Groups groups = 3; - optional Request request = 4; - repeated Read read = 5; - optional Blocked blocked = 6; - optional Verified verified = 7; - optional bytes padding = 8; - optional Settings settings = 9; + optional Sent sent = 1; + optional Contacts contacts = 2; + optional Groups groups = 3; + optional Request request = 4; + repeated Read read = 5; + optional Blocked blocked = 6; + optional Verified verified = 7; + optional Configuration configuration = 9; + optional bytes padding = 8; } message AttachmentPointer { @@ -171,6 +173,8 @@ message AttachmentPointer { optional bytes digest = 6; optional string fileName = 7; optional uint32 flags = 8; + optional uint32 width = 9; + optional uint32 height = 10; } message GroupContext { diff --git a/protos/SubProtocol.proto b/protos/SubProtocol.proto index 0fc5ce75d969..52dbe37b7f40 100644 --- a/protos/SubProtocol.proto +++ b/protos/SubProtocol.proto @@ -14,7 +14,7 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ -package textsecure; +package signalservice; option java_package = "org.whispersystems.websocket.messages.protobuf"; @@ -42,4 +42,4 @@ message WebSocketMessage { optional Type type = 1; optional WebSocketRequestMessage request = 2; optional WebSocketResponseMessage response = 3; -} \ No newline at end of file +} diff --git a/protos/WhisperTextProtocol.proto b/protos/WhisperTextProtocol.proto index eaa9a75c4e1b..852d5640b5ff 100644 --- a/protos/WhisperTextProtocol.proto +++ b/protos/WhisperTextProtocol.proto @@ -1,4 +1,4 @@ -package textsecure; +package signalservice; option java_package = "org.whispersystems.libsignal.protocol"; option java_outer_classname = "WhisperProtos";