diff options
| author | Sébastien Theys <seb@odoo.com> | 2021-01-18 16:49:01 +0000 |
|---|---|---|
| committer | Sébastien Theys <seb@odoo.com> | 2021-01-18 16:59:02 +0000 |
| commit | e995f03a9a55280b1e9173223cdfa619ae164cc3 (patch) | |
| tree | 3aefcd4e4621f11cc971a652d7ed6f01a70765c0 /addons/mail/static/src/models/thread | |
| parent | 20d6efa817a4d839777c81d403bb8770807e784a (diff) | |
[FIX] mail, im_livechat, snailmail: use findFromIdentifyingData
find is O(n) and findFromIdentifyingData is O(1)
task-2440693
closes odoo/odoo#64712
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Diffstat (limited to 'addons/mail/static/src/models/thread')
| -rw-r--r-- | addons/mail/static/src/models/thread/thread.js | 12 | ||||
| -rw-r--r-- | addons/mail/static/src/models/thread/thread_tests.js | 66 |
2 files changed, 37 insertions, 41 deletions
diff --git a/addons/mail/static/src/models/thread/thread.js b/addons/mail/static/src/models/thread/thread.js index 6135a8802c3..23256c62e7d 100644 --- a/addons/mail/static/src/models/thread/thread.js +++ b/addons/mail/static/src/models/thread/thread.js @@ -547,14 +547,10 @@ function factory(dependencies) { * @returns {mail.thread_cache} */ cache(stringifiedDomain = '[]') { - let cache = this.caches.find(cache => cache.stringifiedDomain === stringifiedDomain); - if (!cache) { - cache = this.env.models['mail.thread_cache'].create({ - stringifiedDomain, - thread: [['link', this]], - }); - } - return cache; + return this.env.models['mail.thread_cache'].insert({ + stringifiedDomain, + thread: [['link', this]], + }); } /** diff --git a/addons/mail/static/src/models/thread/thread_tests.js b/addons/mail/static/src/models/thread/thread_tests.js index 8f9efe0111f..a535cf4e72f 100644 --- a/addons/mail/static/src/models/thread/thread_tests.js +++ b/addons/mail/static/src/models/thread/thread_tests.js @@ -45,12 +45,12 @@ QUnit.test('create (channel)', async function (assert) { assert.expect(23); await this.start(); - assert.notOk(this.env.models['mail.partner'].find(partner => partner.id === 9)); - assert.notOk(this.env.models['mail.partner'].find(partner => partner.id === 10)); - assert.notOk(this.env.models['mail.thread'].find(thread => - thread.id === 100 && - thread.model === 'mail.channel' - )); + assert.notOk(this.env.models['mail.partner'].findFromIdentifyingData({ id: 9 })); + assert.notOk(this.env.models['mail.partner'].findFromIdentifyingData({ id: 10 })); + assert.notOk(this.env.models['mail.thread'].findFromIdentifyingData({ + id: 100, + model: 'mail.channel', + })); const thread = this.env.models['mail.thread'].create({ channel_type: 'channel', @@ -71,18 +71,18 @@ QUnit.test('create (channel)', async function (assert) { serverMessageUnreadCounter: 5, }); assert.ok(thread); - assert.ok(this.env.models['mail.partner'].find(partner => partner.id === 9)); - assert.ok(this.env.models['mail.partner'].find(partner => partner.id === 10)); - assert.ok(this.env.models['mail.thread'].find(thread => - thread.id === 100 && - thread.model === 'mail.channel' - )); - const partner9 = this.env.models['mail.partner'].find(partner => partner.id === 9); - const partner10 = this.env.models['mail.partner'].find(partner => partner.id === 10); - assert.strictEqual(thread, this.env.models['mail.thread'].find(thread => - thread.id === 100 && - thread.model === 'mail.channel' - )); + assert.ok(this.env.models['mail.partner'].findFromIdentifyingData({ id: 9 })); + assert.ok(this.env.models['mail.partner'].findFromIdentifyingData({ id: 10 })); + assert.ok(this.env.models['mail.thread'].findFromIdentifyingData({ + id: 100, + model: 'mail.channel', + })); + const partner9 = this.env.models['mail.partner'].findFromIdentifyingData({ id: 9 }); + const partner10 = this.env.models['mail.partner'].findFromIdentifyingData({ id: 10 }); + assert.strictEqual(thread, this.env.models['mail.thread'].findFromIdentifyingData({ + id: 100, + model: 'mail.channel', + })); assert.strictEqual(thread.model, 'mail.channel'); assert.strictEqual(thread.channel_type, 'channel'); assert.strictEqual(thread.id, 100); @@ -104,11 +104,11 @@ QUnit.test('create (chat)', async function (assert) { assert.expect(15); await this.start(); - assert.notOk(this.env.models['mail.partner'].find(partner => partner.id === 5)); - assert.notOk(this.env.models['mail.thread'].find(thread => - thread.id === 200 && - thread.model === 'mail.channel' - )); + assert.notOk(this.env.models['mail.partner'].findFromIdentifyingData({ id: 5 })); + assert.notOk(this.env.models['mail.thread'].findFromIdentifyingData({ + id: 200, + model: 'mail.channel', + })); const channel = this.env.models['mail.thread'].create({ channel_type: 'chat', @@ -122,16 +122,16 @@ QUnit.test('create (chat)', async function (assert) { model: 'mail.channel', }); assert.ok(channel); - assert.ok(this.env.models['mail.thread'].find(thread => - thread.id === 200 && - thread.model === 'mail.channel' - )); - assert.ok(this.env.models['mail.partner'].find(partner => partner.id === 5)); - const partner = this.env.models['mail.partner'].find(partner => partner.id === 5); - assert.strictEqual(channel, this.env.models['mail.thread'].find(thread => - thread.id === 200 && - thread.model === 'mail.channel' - )); + assert.ok(this.env.models['mail.thread'].findFromIdentifyingData({ + id: 200, + model: 'mail.channel', + })); + assert.ok(this.env.models['mail.partner'].findFromIdentifyingData({ id: 5 })); + const partner = this.env.models['mail.partner'].findFromIdentifyingData({ id: 5 }); + assert.strictEqual(channel, this.env.models['mail.thread'].findFromIdentifyingData({ + id: 200, + model: 'mail.channel', + })); assert.strictEqual(channel.model, 'mail.channel'); assert.strictEqual(channel.channel_type, 'chat'); assert.strictEqual(channel.id, 200); |
