소스 검색

Simplify message insertion into the chat area

JC Brand 7 년 전
부모
커밋
cc29d16929
1개의 변경된 파일10개의 추가작업 그리고 38개의 파일을 삭제
  1. 10 38
      src/converse-chatview.js

+ 10 - 38
src/converse-chatview.js

@@ -399,22 +399,6 @@
                     }));
                 },
 
-                insertMessage (attrs, insert_method) {
-                    /* Helper method which appends a message (or prepends if the
-                     * 2nd parameter is set to true) to the end of the chat box's
-                     * content area.
-                     *
-                     * Parameters:
-                     *  (Object) attrs: An object containing the message attributes.
-                     */
-                    _.flow((el) => {
-                            insert_method(el);
-                            return el;
-                        },
-                        this.scrollDown.bind(this)
-                    )(this.renderMessage(attrs));
-                },
-
                 getLastMessageElement () {
                     let last_msg_el = this.content.lastElementChild;
                     while (!_.isNull(last_msg_el) &&
@@ -488,37 +472,25 @@
                      */
                     const current_msg_date = moment(attrs.time) || moment,
                           prepend_html = _.bind(this.content.insertAdjacentHTML, this.content, 'afterbegin'),
-                          previous_msg_date = this.getLastMessageDate(current_msg_date);
+                          previous_msg_date = this.getLastMessageDate(current_msg_date),
+                          message_el = this.renderMessage(attrs);
 
                     if (_.isNull(previous_msg_date)) {
-                        this.insertMessage(attrs, _.bind(this.content.insertAdjacentElement, this.content, 'afterbegin'));
+                        this.content.insertAdjacentElement('afterbegin', message_el);
                         this.insertDayIndicator(current_msg_date, prepend_html);
                     } else {
                         const previous_msg_el = sizzle(`[data-isodate="${previous_msg_date}"]:last`, this.content).pop();
+                        previous_msg_el.insertAdjacentElement('afterend', message_el);
+
                         const day_el = this.getDayIndicatorElement(current_msg_date)
-                        if (current_msg_date.isAfter(previous_msg_date, 'day')) {
-                            if (_.isNull(day_el)) {
-                                this.insertMessage(
-                                    attrs,
-                                    _.bind(previous_msg_el.insertAdjacentElement, previous_msg_el, 'afterend')
-                                );
-                                this.insertDayIndicator(
-                                    current_msg_date,
-                                    _.bind(this.content.insertAdjacentHTML, previous_msg_el, 'afterend')
-                                );
-                            } else {
-                                this.insertMessage(
-                                    attrs,
-                                    _.bind(previous_msg_el.insertAdjacentElement, day_el, 'afterend')
-                                );
-                            }
-                        } else {
-                            this.insertMessage(
-                                attrs,
-                                _.bind(previous_msg_el.insertAdjacentElement, previous_msg_el, 'afterend')
+                        if (current_msg_date.isAfter(previous_msg_date, 'day') && _.isNull(day_el)) {
+                            this.insertDayIndicator(
+                                current_msg_date,
+                                _.bind(this.content.insertAdjacentHTML, previous_msg_el, 'afterend')
                             );
                         }
                     }
+                    this.scrollDown();
                 },
 
                 getExtraMessageTemplateAttributes () {