Browse Source

Chat room messages are now stored in browser storage.

JC Brand 11 năm trước cách đây
mục cha
commit
95a77e3f92
1 tập tin đã thay đổi với 17 bổ sung35 xóa
  1. 17 35
      converse.js

+ 17 - 35
converse.js

@@ -910,12 +910,18 @@
 
             createMessage: function ($message) {
                 var body = $message.children('body').text(),
-                    from = Strophe.getBareJidFromJid($message.attr('from')),
                     composing = $message.find('composing'),
                     paused = $message.find('paused'),
                     delayed = $message.find('delay').length > 0,
                     fullname = this.get('fullname'),
-                    stamp, time, sender;
+                    is_groupchat = $message.attr('type') === 'groupchat',
+                    stamp, time, sender, from;
+
+                if (is_groupchat) {
+                    from = Strophe.unescapeNode(Strophe.getResourceFromJid($message.attr('from')));
+                } else {
+                    from = Strophe.getBareJidFromJid($message.attr('from'));
+                }
                 fullname = (_.isEmpty(fullname)? from: fullname).split(' ')[0];
 
                 if (!body) {
@@ -936,7 +942,7 @@
                     } else {
                         time = moment().format();
                     }
-                    if (from == converse.bare_jid) {
+                    if ((is_groupchat && from === this.get('nick')) || (!is_groupchat && from == converse.bare_jid)) {
                         sender = 'me';
                     } else {
                         sender = 'them';
@@ -2648,52 +2654,28 @@
                 var $message = $(message),
                     body = $message.children('body').text(),
                     jid = $message.attr('from'),
-                    $chat_content = this.$el.find('.chat-content'),
                     resource = Strophe.getResourceFromJid(jid),
                     sender = resource && Strophe.unescapeNode(resource) || '',
                     delayed = $message.find('delay').length > 0,
-                    subject = $message.children('subject').text(),
-                    match, template, dates, message_datetime, message_date, message_date_str;
-
-                if (delayed) {
-                    message_datetime = moment($message.find('delay').attr('stamp'));
-                } else {
-                    message_datetime = moment();
-                }
-                // If this message is on a different day than the one received
-                // prior, then indicate it on the chatbox.
-                dates = $chat_content.find("time").map(function(){return $(this).attr("datetime");}).get();
-                message_date = message_datetime.clone().startOf('day');
-                message_date_str = message_date.format("YYYY-MM-DD");
-                if (_.indexOf(dates, message_date_str) === -1) {
-                    $chat_content.append(converse.templates.new_day({
-                        isodate: message_date_str,
-                        datestring: message_date.format("dddd MMM Do YYYY")
-                    }));
-                }
-
+                    subject = $message.children('subject').text();
                 this.showStatusMessages($message);
                 if (subject) {
                     this.$el.find('.chatroom-topic').text(subject).attr('title', subject);
                     // # For translators: the %1$s and %2$s parts will get replaced by the user and topic text respectively
                     // # Example: Topic set by JC Brand to: Hello World!
-                    $chat_content.append(
+                    this.$el.find('.chat-content').append(
                         converse.templates.info({
                             'message': __('Topic set by %1$s to: %2$s', sender, subject)
                         }));
                 }
-                if (!body) { return true; }
-                var display_sender = sender === this.model.get('nick') && 'me' || 'room';
-                if (!delayed && display_sender === 'room' && (new RegExp("\\b"+this.model.get('nick')+"\\b")).test(body)) {
+                if (sender === '') {
+                    return true;
+                }
+                this.model.createMessage($message);
+                if (!delayed && sender !== this.model.get('nick') && (new RegExp("\\b"+this.model.get('nick')+"\\b")).test(body)) {
                     playNotification();
                 }
-                this.showMessage({
-                    'message': body,
-                    'sender': display_sender,
-                    'fullname': sender,
-                    'time': message_datetime.format()
-                });
-                if (display_sender === 'room') {
+                if (sender !== this.model.get('nick')) {
                     // We only emit an event if it's not our own message
                     converse.emit('message', message);
                 }