/* vim: ts=4:sw=4:expandtab * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . */ (function () { 'use strict'; window.Whisper = window.Whisper || {}; Whisper.MessageDetailView = Whisper.View.extend({ className: 'message-detail', template: $('#message-detail').html(), initialize: function(options) { this.view = new Whisper.MessageView({model: this.model}); this.conversation = options.conversation; }, events: { 'click .back': 'goBack', 'verify': 'verify' }, goBack: function() { this.trigger('back'); }, verify: function(number) { var view = new Whisper.KeyVerificationView({ model: { their_key: textsecure.storage.devices.getIdentityKeyForNumber(number), your_key: textsecure.storage.devices.getIdentityKeyForNumber( textsecure.utils.unencodeNumber(textsecure.storage.getUnencrypted("number_id"))[0] ) } }); this.$el.hide(); view.render().$el.insertAfter(this.el); this.listenTo(view, 'back', function() { view.remove(); this.$el.show(); }); }, contacts: function() { if (this.model.isIncoming()) { var number = this.model.get('source'); return [this.conversation.contactCollection.get(number)]; } else { return this.conversation.contactCollection.models; } }, render: function() { this.$el.html(Mustache.render(this.template, { sent_at: moment(this.model.get('sent_at')).toString(), received_at: moment(this.model.get('received_at')).toString(), tofrom: this.model.isIncoming() ? 'From' : 'To', contacts: this.contacts().map(function(contact) { return { name : contact.getTitle(), avatar : contact.get('avatar'), }; }.bind(this)) })); this.view.render().$el.prependTo(this.$el.find('.message-container')); } }); })();