diff --git a/js/crypto.js b/js/crypto.js
index 79f19702d..a37513f32 100644
--- a/js/crypto.js
+++ b/js/crypto.js
@@ -603,7 +603,9 @@ window.textsecure.crypto = new function() {
case 0: //TYPE_MESSAGE_PLAINTEXT
return Promise.resolve(decodePushMessageContentProtobuf(getString(proto.message)));
case 1: //TYPE_MESSAGE_CIPHERTEXT
- return decryptWhisperMessage(proto.source, getString(proto.message));
+ return decryptWhisperMessage(proto.source, getString(proto.message)).then(function(result) {
+ return {message:result, pushMessage: proto};
+ });
case 3: //TYPE_MESSAGE_PREKEY_BUNDLE
if (proto.message.readUint8() != (2 << 4 | 2))
throw new Error("Bad version byte");
@@ -612,7 +614,7 @@ window.textsecure.crypto = new function() {
return decryptWhisperMessage(proto.source, getString(preKeyProto.message), sessions[0]).then(function(result) {
if (sessions[1] !== undefined)
crypto_storage.saveSession(proto.source, sessions[1]);
- return result;
+ return {message: result, pushMessage:proto};
});
});
}
diff --git a/js/views/messages.js b/js/views/messages.js
index c9e9ebfe3..87af47492 100644
--- a/js/views/messages.js
+++ b/js/views/messages.js
@@ -22,8 +22,10 @@ var Whisper = Whisper || {};
this.$el.find('.message-text').text(this.model.get('body'));
var attachments = this.model.get('attachments');
- for (var i = 0; i < attachments.length; i++)
- this.$el.find('.message-attachment').append('
');
+ if (attachments) {
+ for (var i = 0; i < attachments.length; i++)
+ this.$el.find('.message-attachment').append('
');
+ }
this.$el.find('.metadata').text(this.formatTimestamp());
return this;