diff options
| author | Xavier Dubuc <xdu@odoo.com> | 2020-09-03 16:24:19 +0000 |
|---|---|---|
| committer | Sébastien Theys <seb@odoo.com> | 2020-09-04 14:59:01 +0000 |
| commit | 8d3413ff647de8d98c6858062dd07dde4160af95 (patch) | |
| tree | 3dc134e83c874d5c7f7bf739f13a88ab986ddb1b /addons/mail/static/src/components/message/message_tests.js | |
| parent | a5ab687be4e7890262ce9429e18dd011021513d5 (diff) | |
[FIX] mail, sms, snailmail: prevent message_fetch for hidden threads
Automatically load messages from a thread cache only if the thread cache is used
in at least one thread view.
Ensure thread viewer don't keep thread view records alive when they are not
displayed.
This change is particularly important for performance, to avoid spamming RPC at
init if many threads are opened in chat windows.
task-2310623
closes odoo/odoo#57061
X-original-commit: dd6981c7812134e0588f80a157eaba45512cd68e
Related: odoo/enterprise#12936
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Diffstat (limited to 'addons/mail/static/src/components/message/message_tests.js')
| -rw-r--r-- | addons/mail/static/src/components/message/message_tests.js | 86 |
1 files changed, 58 insertions, 28 deletions
diff --git a/addons/mail/static/src/components/message/message_tests.js b/addons/mail/static/src/components/message/message_tests.js index df964458fea..e69c40e35aa 100644 --- a/addons/mail/static/src/components/message/message_tests.js +++ b/addons/mail/static/src/components/message/message_tests.js @@ -190,7 +190,8 @@ QUnit.test('Notification Sent', async function (assert) { assert.expect(9); await this.start(); - const threadView = this.env.models['mail.thread_view'].create({ + const threadViewer = this.env.models['mail.thread_viewer'].create({ + hasThreadView: true, thread: [['create', { id: 11, model: 'mail.channel', @@ -205,10 +206,10 @@ QUnit.test('Notification Sent', async function (assert) { notification_type: 'email', partner: [['insert', { id: 12, name: "Someone" }]], }]], - originThread: [['link', threadView.thread]], + originThread: [['link', threadViewer.thread]], }); await this.createMessageComponent(message, { - threadViewLocalId: threadView.localId + threadViewLocalId: threadViewer.threadView.localId }); assert.containsOnce( @@ -281,7 +282,8 @@ QUnit.test('Notification Error', async function (assert) { }); await this.start({ env: { bus } }); - const threadView = this.env.models['mail.thread_view'].create({ + const threadViewer = this.env.models['mail.thread_viewer'].create({ + hasThreadView: true, thread: [['create', { id: 11, model: 'mail.channel', @@ -295,10 +297,10 @@ QUnit.test('Notification Error', async function (assert) { notification_status: 'exception', notification_type: 'email', }]], - originThread: [['link', threadView.thread]], + originThread: [['link', threadViewer.thread]], }); await this.createMessageComponent(message, { - threadViewLocalId: threadView.localId + threadViewLocalId: threadViewer.threadView.localId }); assert.containsOnce( @@ -347,7 +349,10 @@ QUnit.test("'channel_fetch' notification received is correctly handled", async f ], model: 'mail.channel', }); - const threadView = this.env.models['mail.thread_view'].create({ thread: [['link', thread]] }); + const threadViewer = this.env.models['mail.thread_viewer'].create({ + hasThreadView: true, + thread: [['link', thread]], + }); const message = this.env.models['mail.message'].create({ author: [['link', currentPartner]], body: "<p>Test</p>", @@ -355,7 +360,9 @@ QUnit.test("'channel_fetch' notification received is correctly handled", async f originThread: [['link', thread]], }); - await this.createMessageComponent(message, { threadViewLocalId: threadView.localId }); + await this.createMessageComponent(message, { + threadViewLocalId: threadViewer.threadView.localId, + }); assert.containsOnce( document.body, @@ -403,14 +410,19 @@ QUnit.test("'channel_seen' notification received is correctly handled", async fu ], model: 'mail.channel', }); - const threadView = this.env.models['mail.thread_view'].create({ thread: [['link', thread]] }); + const threadViewer = this.env.models['mail.thread_viewer'].create({ + hasThreadView: true, + thread: [['link', thread]], + }); const message = this.env.models['mail.message'].create({ author: [['link', currentPartner]], body: "<p>Test</p>", id: 100, originThread: [['link', thread]], }); - await this.createMessageComponent(message, { threadViewLocalId: threadView.localId }); + await this.createMessageComponent(message, { + threadViewLocalId: threadViewer.threadView.localId, + }); assert.containsOnce( document.body, @@ -458,14 +470,19 @@ QUnit.test("'channel_fetch' notification then 'channel_seen' received are corre ], model: 'mail.channel', }); - const threadView = this.env.models['mail.thread_view'].create({ thread: [['link', thread]] }); + const threadViewer = this.env.models['mail.thread_viewer'].create({ + hasThreadView: true, + thread: [['link', thread]], + }); const message = this.env.models['mail.message'].create({ author: [['link', currentPartner]], body: "<p>Test</p>", id: 100, originThread: [['link', thread]], }); - await this.createMessageComponent(message, { threadViewLocalId: threadView.localId }); + await this.createMessageComponent(message, { + threadViewLocalId: threadViewer.threadView.localId, + }); assert.containsOnce( document.body, @@ -527,25 +544,28 @@ QUnit.test('do not show messaging seen indicator if not authored by me', async f partnerSeenInfos: [['create', [ { id: this.env.session.partner_id, - lastFetchedMessage: [['insert', {id: 100}]], - partner: [['insert', {id: this.env.messaging.currentPartner.id}]], + lastFetchedMessage: [['insert', { id: 100 }]], + partner: [['insert', { id: this.env.messaging.currentPartner.id }]], }, { id: 100, - lastFetchedMessage: [['insert', {id: 100}]], + lastFetchedMessage: [['insert', { id: 100 }]], partner: [['link', author]], }, ]]], model: 'mail.channel', }); - const threadView = this.env.models['mail.thread_view'].create({ thread: [['link', thread]] }); + const threadViewer = this.env.models['mail.thread_viewer'].create({ + hasThreadView: true, + thread: [['link', thread]], + }); const message = this.env.models['mail.message'].insert({ author: [['link', author]], body: "<p>Test</p>", id: 100, originThread: [['link', thread]], }); - await this.createMessageComponent(message, { threadViewLocalId: threadView.localId }); + await this.createMessageComponent(message, { threadViewLocalId: threadViewer.threadView.localId }); assert.containsOnce( document.body, @@ -571,11 +591,14 @@ QUnit.test('do not show messaging seen indicator if before last seen by all mess id: 11, messageSeenIndicators: [['insert', { id: this.env.models['mail.message_seen_indicator'].computeId(99, 11), - message: [['insert', {id: 99}]], + message: [['insert', { id: 99 }]], }]], model: 'mail.channel', }); - const threadView = this.env.models['mail.thread_view'].create({ thread: [['link', thread]] }); + const threadViewer = this.env.models['mail.thread_viewer'].create({ + hasThreadView: true, + thread: [['link', thread]], + }); const lastSeenMessage = this.env.models['mail.message'].create({ author: [['link', currentPartner]], body: "<p>You already saw me</p>", @@ -598,11 +621,13 @@ QUnit.test('do not show messaging seen indicator if before last seen by all mess { id: 100, lastSeenMessage: [['link', lastSeenMessage]], - partner: [['insert', {id: 100}]], + partner: [['insert', { id: 100 }]], }, ]]], }); - await this.createMessageComponent(message, { threadViewLocalId: threadView.localId }); + await this.createMessageComponent(message, { + threadViewLocalId: threadViewer.threadView.localId, + }); assert.containsOnce( document.body, @@ -634,30 +659,35 @@ QUnit.test('only show messaging seen indicator if authored by me, after last see partnerSeenInfos: [['create', [ { id: currentPartner.id, - lastSeenMessage: [['insert', {id: 100}]], + lastSeenMessage: [['insert', { id: 100 }]], partner: [['link', currentPartner]], }, { id: 100, - partner: [['insert', {id: 100}]], - lastFetchedMessage: [['insert', {id: 100}]], - lastSeenMessage: [['insert', {id: 99}]], + partner: [['insert', { id: 100 }]], + lastFetchedMessage: [['insert', { id: 100 }]], + lastSeenMessage: [['insert', { id: 99 }]], }, ]]], messageSeenIndicators: [['insert', { id: this.env.models['mail.message_seen_indicator'].computeId(100, 11), - message: [['insert', {id: 100}]], + message: [['insert', { id: 100 }]], }]], model: 'mail.channel', }); - const threadView = this.env.models['mail.thread_view'].create({ thread: [['link', thread]] }); + const threadViewer = this.env.models['mail.thread_viewer'].create({ + hasThreadView: true, + thread: [['link', thread]], + }); const message = this.env.models['mail.message'].insert({ author: [['link', currentPartner]], body: "<p>Test</p>", id: 100, originThread: [['link', thread]], }); - await this.createMessageComponent(message, { threadViewLocalId: threadView.localId }); + await this.createMessageComponent(message, { + threadViewLocalId: threadViewer.threadView.localId, + }); assert.containsOnce( document.body, |
