[FIX] mail: don't crash on click reply
Fix bug introduced in https://github.com/odoo/odoo/pull/94948. Add test for MessageInReplyToView. closes odoo/odoo#95303 Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
This commit is contained in:
@@ -15,19 +15,19 @@ registerModel({
|
||||
*/
|
||||
onClickReply(ev) {
|
||||
markEventHandled(ev, 'MessageInReplyToView.ClickMessageInReplyTo');
|
||||
const threadView = this.messageView && this.messageView.messageListViewMessageViewItemOwner && this.messageView.messageListViewMessageViewItemOwner.messageListViewOwner.threadViewOwner;
|
||||
const messageListViewMessageViewItem = this.messageView && this.messageView.messageListViewMessageViewItemOwner;
|
||||
const parentMessage = this.messageView.message.parentMessage;
|
||||
if (!threadView || !parentMessage) {
|
||||
if (!messageListViewMessageViewItem || !parentMessage) {
|
||||
return;
|
||||
}
|
||||
const parentMessageView = this.messaging.models['MessageView'].findFromIdentifyingData({
|
||||
const parentMessageListViewMessageViewItem = this.messaging.models['MessageListViewMessageViewItem'].findFromIdentifyingData({
|
||||
message: replace(parentMessage),
|
||||
threadView: replace(threadView),
|
||||
messageListViewOwner: replace(messageListViewMessageViewItem.messageListViewOwner),
|
||||
});
|
||||
if (!parentMessageView) {
|
||||
if (!parentMessageListViewMessageViewItem) {
|
||||
return;
|
||||
}
|
||||
parentMessageView.update({ doHighlight: true });
|
||||
parentMessageListViewMessageViewItem.messageView.update({ doHighlight: true });
|
||||
},
|
||||
/**
|
||||
* @private
|
||||
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
/** @odoo-module **/
|
||||
|
||||
import { start, startServer } from '@mail/../tests/helpers/test_utils';
|
||||
|
||||
QUnit.module('mail', {}, function () {
|
||||
QUnit.module('components', {}, function() {
|
||||
QUnit.module('message_in_reply_to_view_tests');
|
||||
|
||||
QUnit.test('click on message in reply to highlights the parent message', async function (assert) {
|
||||
assert.expect(1);
|
||||
|
||||
const pyEnv = await startServer();
|
||||
const mailChannelId1 = pyEnv['mail.channel'].create({});
|
||||
const mailMessageId1 = pyEnv['mail.message'].create({
|
||||
body: "Hey lol",
|
||||
message_type: 'comment',
|
||||
model: 'mail.channel',
|
||||
res_id: mailChannelId1,
|
||||
});
|
||||
const mailMessageId2 = pyEnv['mail.message'].create({
|
||||
body: "Response to Hey lol",
|
||||
message_type: 'comment',
|
||||
model: 'mail.channel',
|
||||
parent_id: mailMessageId1,
|
||||
res_id: mailChannelId1,
|
||||
});
|
||||
const { click, openDiscuss } = await start({
|
||||
discuss: {
|
||||
params: {
|
||||
default_active_id: `mail.channel_${mailChannelId1}`,
|
||||
},
|
||||
},
|
||||
});
|
||||
await openDiscuss();
|
||||
await click(`.o_Message[data-id="${mailMessageId2}"] .o_MessageInReplyToView_body`);
|
||||
assert.containsOnce(
|
||||
document.body,
|
||||
`.o-highlighted[data-id="${mailMessageId1}"]`,
|
||||
"click on message in reply to should highlight the parent message"
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user