[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:
Louis Wicket (wil)
2022-07-05 12:42:39 +02:00
parent 44f80b2c95
commit c56c5ca28f
2 changed files with 49 additions and 6 deletions
@@ -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
@@ -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"
);
});
});
});