Skip to content

Commit 07e9ed7

Browse files
authored
Chat: remove isLast arg from messageTemplate (#28287)
1 parent 1af0bd9 commit 07e9ed7

12 files changed

+29
-59
lines changed
-353 Bytes
Loading
-224 Bytes
Loading
-166 Bytes
Loading
1.01 KB
Loading
658 Bytes
Loading
578 Bytes
Loading

e2e/testcafe-devextreme/tests/chat/messageList.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -236,14 +236,8 @@ test('Messagelist with messageTemplate', async (t) => {
236236
message.timestamp = undefined;
237237
component.renderMessage(message);
238238
},
239-
messageTemplate: ({ text, author, isLast }, container) => {
240-
if (isLast) {
241-
$('<div>').text('Last message template').appendTo(container);
242-
243-
return;
244-
}
245-
246-
$('<div>').text(`${author.name} says: ${text}`).appendTo(container);
239+
messageTemplate: ({ message }, container) => {
240+
$('<div>').text(`${message.author.name} says: ${message.text}`).appendTo(container);
247241
},
248242
});
249243
});

packages/devextreme/js/__internal/ui/chat/messagebubble.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import $ from '@js/core/renderer';
2-
import type { User } from '@js/ui/chat';
2+
import type { Message } from '@js/ui/chat';
33
import type { WidgetOptions } from '@js/ui/widget/ui.widget';
44
import type { OptionChanged } from '@ts/core/widget/types';
55
import Widget from '@ts/core/widget/widget';
@@ -12,7 +12,7 @@ export interface Properties extends WidgetOptions<MessageBubble> {
1212
text?: string;
1313
// eslint-disable-next-line
1414
template?: null | any;
15-
templateData?: { component?: Chat; isLast?: boolean; author?: User };
15+
templateData?: { component?: Chat; message?: Message };
1616
}
1717

1818
class MessageBubble extends Widget<Properties> {
@@ -43,14 +43,10 @@ class MessageBubble extends Widget<Properties> {
4343
$(this.element()).empty();
4444

4545
const messageTemplate = this._getTemplateByOption('template');
46-
const data = {
47-
text,
48-
...templateData,
49-
};
5046

5147
messageTemplate.render({
5248
container: this.element(),
53-
model: data,
49+
model: templateData,
5450
});
5551

5652
return;

packages/devextreme/js/__internal/ui/chat/messagegroup.ts

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ export interface Properties extends WidgetOptions<MessageGroup> {
3333
// eslint-disable-next-line
3434
messageTemplate: any;
3535
messageTemplateData: { component?: Chat };
36-
isLast: boolean;
3736
messageTimestampFormat?: Format;
3837
}
3938

@@ -54,7 +53,6 @@ class MessageGroup extends Widget<Properties> {
5453
showMessageTimestamp: true,
5554
messageTemplate: null,
5655
messageTemplateData: {},
57-
isLast: false,
5856
messageTimestampFormat: 'shorttime',
5957
};
6058
}
@@ -92,8 +90,6 @@ class MessageGroup extends Widget<Properties> {
9290
this._renderAvatar();
9391
}
9492

95-
this._lastBubble = null;
96-
9793
this._renderMessageGroupInformation(items?.[0]);
9894
this._renderMessageBubbles(items);
9995
}
@@ -114,33 +110,27 @@ class MessageGroup extends Widget<Properties> {
114110
});
115111
}
116112

117-
_renderMessageBubble(message: Message, isLast = false): void {
113+
_renderMessageBubble(message: Message): void {
118114
const $bubble = $('<div>');
119115
const { messageTemplate, messageTemplateData } = this.option();
120116

121-
const messageBubble = this._createComponent($bubble, MessageBubble, {
117+
this._createComponent($bubble, MessageBubble, {
122118
text: message.text,
123119
template: messageTemplate,
124120
templateData: {
125121
...messageTemplateData,
126-
author: message.author,
127-
isLast,
122+
message,
128123
},
129124
});
130125

131-
this._lastBubble = messageBubble;
132-
133126
this._$messageBubbleContainer.append($bubble);
134127
}
135128

136129
_renderMessageBubbles(items: Message[]): void {
137130
this._$messageBubbleContainer = $('<div>').addClass(CHAT_MESSAGEGROUP_CONTENT_CLASS);
138-
const { isLast } = this.option();
139131

140-
items.forEach((message, index) => {
141-
const isLastMessage = isLast && index === items.length - 1;
142-
143-
this._renderMessageBubble(message, isLastMessage);
132+
items.forEach((message) => {
133+
this._renderMessageBubble(message);
144134
});
145135

146136
this._$messageBubbleContainer.appendTo(this.element());
@@ -179,10 +169,6 @@ class MessageGroup extends Widget<Properties> {
179169
$information.appendTo(this.element());
180170
}
181171

182-
updateIsLastOptionOfLastMessage(isLast: boolean): void {
183-
this._lastBubble?.option('templateData.isLast', isLast);
184-
}
185-
186172
_shouldAddTimeValue(timestamp: Date | string | number | undefined): boolean {
187173
const deserializedDate = dateSerialization.deserializeDate(timestamp);
188174

@@ -229,7 +215,7 @@ class MessageGroup extends Widget<Properties> {
229215

230216
this._setOptionWithoutOptionChange('items', newItems);
231217

232-
this._renderMessageBubble(message, true);
218+
this._renderMessageBubble(message);
233219
}
234220
}
235221

packages/devextreme/js/__internal/ui/chat/messagelist.ts

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -214,11 +214,7 @@ class MessageList extends Widget<Properties> {
214214
return this._isCurrentUser(id) ? 'end' : 'start';
215215
}
216216

217-
_createMessageGroupComponent(
218-
items: Message[],
219-
userId: string | number | undefined,
220-
isLast = false,
221-
): void {
217+
_createMessageGroupComponent(items: Message[], userId: string | number | undefined): void {
222218
const {
223219
showAvatar,
224220
showUserName,
@@ -238,7 +234,6 @@ class MessageList extends Widget<Properties> {
238234
showMessageTimestamp,
239235
messageTemplate,
240236
messageTemplateData,
241-
isLast,
242237
messageTimestampFormat,
243238
});
244239

@@ -362,11 +357,7 @@ class MessageList extends Widget<Properties> {
362357
}
363358

364359
if (items.length - 1 === index) {
365-
this._createMessageGroupComponent(
366-
currentMessageGroupItems,
367-
currentMessageGroupUserId,
368-
true,
369-
);
360+
this._createMessageGroupComponent(currentMessageGroupItems, currentMessageGroupUserId);
370361
}
371362
});
372363

@@ -380,8 +371,6 @@ class MessageList extends Widget<Properties> {
380371
const lastMessageGroup = this._messageGroups?.at(-1);
381372
const shouldCreateDayHeader = this._shouldAddDayHeader(timestamp);
382373

383-
lastMessageGroup?.updateIsLastOptionOfLastMessage(false);
384-
385374
if (lastMessageGroup) {
386375
const { items } = lastMessageGroup.option();
387376
const lastMessageGroupItem = items[items.length - 1];
@@ -401,7 +390,7 @@ class MessageList extends Widget<Properties> {
401390
this._createDayHeader(timestamp);
402391
}
403392

404-
this._createMessageGroupComponent([message], author?.id, true);
393+
this._createMessageGroupComponent([message], author?.id);
405394

406395
this._scrollDownContent();
407396
}

0 commit comments

Comments
 (0)