Selaa lähdekoodia

Don't indent followup messages when messages don't have avatars

JC Brand 5 vuotta sitten
vanhempi
commit
18b0d8db3f
3 muutettua tiedostoa jossa 17 lisäystä ja 12 poistoa
  1. 1 1
      sass/_messages.scss
  2. 3 3
      spec/muc_messages.js
  3. 13 8
      src/components/message.js

+ 1 - 1
sass/_messages.scss

@@ -318,7 +318,7 @@
                 .chat-msg__avatar {
                 .chat-msg__avatar {
                     display: none;
                     display: none;
                 }
                 }
-                .chat-msg__content {
+                &.chat-msg--with-avatar .chat-msg__content {
                     margin-left: 2.75rem;
                     margin-left: 2.75rem;
                     width: 100%;
                     width: 100%;
                 }
                 }

+ 3 - 3
spec/muc_messages.js

@@ -416,7 +416,7 @@ describe("A Groupchat Message", function () {
         expect(view.model.messages.last().occupant.get('affiliation')).toBe('owner');
         expect(view.model.messages.last().occupant.get('affiliation')).toBe('owner');
         expect(view.model.messages.last().occupant.get('role')).toBe('moderator');
         expect(view.model.messages.last().occupant.get('role')).toBe('moderator');
         expect(view.el.querySelectorAll('.chat-msg').length).toBe(1);
         expect(view.el.querySelectorAll('.chat-msg').length).toBe(1);
-        expect(sizzle('.chat-msg', view.el).pop().classList.value.trim()).toBe('message chat-msg groupchat moderator owner');
+        expect(sizzle('.chat-msg', view.el).pop().classList.value.trim()).toBe('message chat-msg groupchat chat-msg--with-avatar moderator owner');
         let presence = $pres({
         let presence = $pres({
                 to:'romeo@montague.lit/orchard',
                 to:'romeo@montague.lit/orchard',
                 from:'lounge@montague.lit/romeo',
                 from:'lounge@montague.lit/romeo',
@@ -442,7 +442,7 @@ describe("A Groupchat Message", function () {
         expect(view.model.messages.last().occupant.get('affiliation')).toBe('member');
         expect(view.model.messages.last().occupant.get('affiliation')).toBe('member');
         expect(view.model.messages.last().occupant.get('role')).toBe('participant');
         expect(view.model.messages.last().occupant.get('role')).toBe('participant');
         expect(view.el.querySelectorAll('.chat-msg').length).toBe(2);
         expect(view.el.querySelectorAll('.chat-msg').length).toBe(2);
-        expect(sizzle('.chat-msg', view.el).pop().classList.value.trim()).toBe('message chat-msg groupchat participant member');
+        expect(sizzle('.chat-msg', view.el).pop().classList.value.trim()).toBe('message chat-msg groupchat chat-msg--with-avatar participant member');
 
 
         presence = $pres({
         presence = $pres({
                 to:'romeo@montague.lit/orchard',
                 to:'romeo@montague.lit/orchard',
@@ -465,7 +465,7 @@ describe("A Groupchat Message", function () {
         expect(occupant.get('affiliation')).toBe('owner');
         expect(occupant.get('affiliation')).toBe('owner');
         expect(occupant.get('role')).toBe('moderator');
         expect(occupant.get('role')).toBe('moderator');
         expect(view.el.querySelectorAll('.chat-msg').length).toBe(3);
         expect(view.el.querySelectorAll('.chat-msg').length).toBe(3);
-        await u.waitUntil(() => sizzle('.chat-msg', view.el).pop().classList.value.trim() === 'message chat-msg groupchat moderator owner');
+        await u.waitUntil(() => sizzle('.chat-msg', view.el).pop().classList.value.trim() === 'message chat-msg groupchat chat-msg--with-avatar moderator owner');
 
 
         const add_events = view.model.occupants._events.add.length;
         const add_events = view.model.occupants._events.add.length;
         msg = $msg({
         msg = $msg({

+ 13 - 8
src/components/message.js

@@ -127,10 +127,11 @@ class Message extends CustomElement {
         const is_groupchat_message = (this.message_type === 'groupchat');
         const is_groupchat_message = (this.message_type === 'groupchat');
         return html`
         return html`
             ${ this.is_first_unread ? html`<div class="message date-separator"><hr class="separator"><span class="separator-text">${ i18n_new_messages }</span></div>` : '' }
             ${ this.is_first_unread ? html`<div class="message date-separator"><hr class="separator"><span class="separator-text">${ i18n_new_messages }</span></div>` : '' }
-            <div class="message chat-msg ${this.message_type} ${this.getExtraMessageClasses()}
-                    ${ this.is_me_message ? 'chat-msg--action' : '' }
-                    ${this.isFollowup() ? 'chat-msg--followup' : ''}"
-                    data-isodate="${this.time}" data-msgid="${this.msgid}" data-from="${this.from}" data-encrypted="${this.is_encrypted}">
+            <div class="message chat-msg ${ this.getExtraMessageClasses() }"
+                 data-isodate="${this.time}"
+                 data-msgid="${this.msgid}"
+                 data-from="${this.from}"
+                 data-encrypted="${this.is_encrypted}">
 
 
                 ${ this.shouldShowAvatar() ? renderAvatar(this.getAvatarData()) : '' }
                 ${ this.shouldShowAvatar() ? renderAvatar(this.getAvatarData()) : '' }
                 <div class="chat-msg__content chat-msg__content--${this.sender} ${this.is_me_message ? 'chat-msg__content--action' : ''}">
                 <div class="chat-msg__content chat-msg__content--${this.sender} ${this.is_me_message ? 'chat-msg__content--action' : ''}">
@@ -215,12 +216,16 @@ class Message extends CustomElement {
             this.is_encrypted === prev_model.get('is_encrypted');
             this.is_encrypted === prev_model.get('is_encrypted');
     }
     }
 
 
-
     getExtraMessageClasses () {
     getExtraMessageClasses () {
         const extra_classes = [
         const extra_classes = [
-            ...(this.is_delayed ? ['delayed'] : []),
-            ...(this.is_retracted ? ['chat-msg--retracted'] : [])
-        ];
+            this.isFollowup() ? 'chat-msg--followup' : null,
+            this.is_delayed ? 'delayed' : null,
+            this.is_me_message ? 'chat-msg--action' : null,
+            this.is_retracted ? 'chat-msg--retracted' : null,
+            this.message_type,
+            this.shouldShowAvatar() ? 'chat-msg--with-avatar' : null,
+        ].map(c => c);
+
         if (this.message_type === 'groupchat') {
         if (this.message_type === 'groupchat') {
             this.occupant_role && extra_classes.push(this.occupant_role);
             this.occupant_role && extra_classes.push(this.occupant_role);
             this.occupant_affiliation && extra_classes.push(this.occupant_affiliation);
             this.occupant_affiliation && extra_classes.push(this.occupant_affiliation);