Skip to content

Commit 60c67af

Browse files
authored
DEV: various improvements to devex on chat (discourse#21612)
- Improves styleguide support - Adds toggle color scheme to styleguide - Adds properties mutators to styleguide - Attempts to quit a session as soon as done with it in system specs, this should at least free resources faster - Refactors fabricators to simplify them - Adds more fabricators (uploads for example) - Starts implementing components pattern in system specs - Uses Chat::Message creator to create messages in system specs, this should help to have more real specs as the side effects should now happen
1 parent 4d0b997 commit 60c67af

File tree

75 files changed

+1003
-261
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+1003
-261
lines changed

plugins/chat/assets/javascripts/discourse/components/chat-channel.hbs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
{{#each @channel.messages key="id" as |message|}}
4242
<ChatMessage
4343
@message={{message}}
44-
@channel={{@channel}}
4544
@resendStagedMessage={{this.resendStagedMessage}}
4645
@messageDidEnterViewport={{this.messageDidEnterViewport}}
4746
@messageDidLeaveViewport={{this.messageDidLeaveViewport}}

plugins/chat/assets/javascripts/discourse/components/chat-channel.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,10 @@ export default class ChatLivePane extends Component {
113113
if (this._loadedChannelId !== this.args.channel?.id) {
114114
this.unsubscribeToUpdates(this._loadedChannelId);
115115
this.chatChannelPane.selectingMessages = false;
116-
this.chatChannelComposer.message =
117-
this.args.channel.draft ||
118-
ChatMessage.createDraftMessage(this.args.channel, {
119-
user: this.currentUser,
120-
});
116+
117+
if (this.args.channel.draft) {
118+
this.chatChannelComposer.message = this.args.channel.draft;
119+
}
121120

122121
this._loadedChannelId = this.args.channel?.id;
123122
}

plugins/chat/assets/javascripts/discourse/components/chat-composer-message-details.hbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
<div class="chat-composer-message-details">
1+
<div class="chat-composer-message-details" data-id={{@message.id}}>
22
<div class="chat-reply">
3-
{{d-icon @icon}}
3+
{{d-icon (if @message.editing "pencil-alt" "reply")}}
44
<ChatUserAvatar @user={{@message.user}} />
55
<span class="chat-reply__username">{{@message.user.username}}</span>
66
<span class="chat-reply__excerpt">

plugins/chat/assets/javascripts/discourse/components/chat-composer.hbs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
this.currentMessage
1010
this.currentMessage.inReplyTo
1111
}}
12-
@icon={{if this.currentMessage.editing "pencil-alt" "reply"}}
1312
@cancelAction={{this.onCancel}}
1413
/>
1514
{{/if}}
@@ -26,7 +25,7 @@
2625
}}
2726
{{did-update this.didUpdateMessage this.currentMessage}}
2827
{{did-update this.didUpdateInReplyTo this.currentMessage.inReplyTo}}
29-
{{did-insert this.setupAppEvents}}
28+
{{did-insert this.setup}}
3029
{{will-destroy this.teardown}}
3130
{{will-destroy this.cancelPersistDraft}}
3231
>
@@ -71,7 +70,7 @@
7170
{{on "click" this.onSend}}
7271
@icon="paper-plane"
7372
class="chat-composer__send-btn"
74-
title="chat.composer.send"
73+
title={{i18n "chat.composer.send"}}
7574
disabled={{or this.disabled (not this.sendEnabled)}}
7675
tabindex={{if this.sendEnabled 0 -1}}
7776
{{on "focus" (fn this.computeIsFocused true)}}

plugins/chat/assets/javascripts/discourse/components/chat-composer.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,10 @@ export default class ChatComposer extends Component {
141141
}
142142

143143
@action
144-
setupAppEvents() {
144+
setup() {
145+
this.composer.message = ChatMessage.createDraftMessage(this.args.channel, {
146+
user: this.currentUser,
147+
});
145148
this.appEvents.on("chat:modify-selection", this, "modifySelection");
146149
this.appEvents.on(
147150
"chat:open-insert-link-modal",

plugins/chat/assets/javascripts/discourse/components/chat-message-actions-desktop.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ export default class ChatMessageActionsDesktop extends Component {
5454
this.context
5555
);
5656

57+
if (!messageContainer) {
58+
return;
59+
}
60+
5761
const viewport = messageContainer.closest(".popper-viewport");
5862
this.size =
5963
viewport.clientWidth < REDUCED_WIDTH_THRESHOLD ? REDUCED : FULL;

plugins/chat/assets/javascripts/discourse/components/chat-message.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ export default class ChatMessage extends Component {
130130
}
131131

132132
_chatMessageDecorators.forEach((decorator) => {
133-
decorator.call(this, this.messageContainer, this.args.channel);
133+
decorator.call(this, this.messageContainer, this.args.message.channel);
134134
});
135135
});
136136
}
@@ -147,7 +147,7 @@ export default class ChatMessage extends Component {
147147
!this.args.message?.deletedAt ||
148148
this.currentUser.id === this.args.message?.user?.id ||
149149
this.currentUser.staff ||
150-
this.args.channel?.canModerate
150+
this.args.message?.channel?.canModerate
151151
);
152152
}
153153

@@ -316,7 +316,10 @@ export default class ChatMessage extends Component {
316316
}
317317

318318
get threadingEnabled() {
319-
return this.args.channel?.threadingEnabled && !!this.args.message?.thread;
319+
return (
320+
this.args.message?.channel?.threadingEnabled &&
321+
!!this.args.message?.thread
322+
);
320323
}
321324

322325
get showThreadIndicator() {

plugins/chat/assets/javascripts/discourse/components/chat-thread.hbs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
{{#each this.thread.messages key="id" as |message|}}
3535
<ChatMessage
3636
@message={{message}}
37-
@channel={{this.channel}}
3837
@resendStagedMessage={{this.resendStagedMessage}}
3938
@messageDidEnterViewport={{this.messageDidEnterViewport}}
4039
@messageDidLeaveViewport={{this.messageDidLeaveViewport}}

plugins/chat/assets/javascripts/discourse/components/chat/thread/list-item.hbs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@
2020
/>
2121
</div>
2222
</div>
23-
<Chat::Thread::OriginalMessage
24-
@thread={{@thread}}
25-
@message={{@thread.originalMessage}}
26-
/>
23+
<Chat::Thread::OriginalMessage @message={{@thread.originalMessage}} />
2724
</div>
2825
</div>
2926
</div>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<StyleguideExample @title="<ChatComposerMessageDetails>">
2+
<Styleguide::Component>
3+
<ChatComposerMessageDetails @message={{this.message}} />
4+
</Styleguide::Component>
5+
6+
<Styleguide::Controls>
7+
<Styleguide::Controls::Row @name="Mode">
8+
{{#if this.message.editing}}
9+
<DButton @action={{this.toggleMode}} @translatedLabel="Reply" />
10+
{{else}}
11+
<DButton @action={{this.toggleMode}} @translatedLabel="Editing" />
12+
{{/if}}
13+
</Styleguide::Controls::Row>
14+
</Styleguide::Controls>
15+
</StyleguideExample>

0 commit comments

Comments
 (0)