From 91ce61ba568d83190e7ed2c168fd56101474683b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Theys?= Date: Fri, 23 Oct 2020 11:03:09 +0000 Subject: [FIX] mail: do not return members of channels in channel_info MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR has 3 parts: The members fix itself, which is necessary for performance reasons especially at init messaging, as per described in the task. Adding the partner name in the typing payload, because due to not knowing all members anymore, it is necessary to properly display who is typing. Restrict restoring scroll position only if the corresponding scroll height is available, to make the scroll feature and particularly the corresponding tests more robust. task-2360020 closes odoo/odoo#60091 Signed-off-by: Alexandre Kühn (aku) --- .../static/src/models/thread_view/thread_viewer.js | 31 +++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'addons/mail/static/src/models/thread_view/thread_viewer.js') diff --git a/addons/mail/static/src/models/thread_view/thread_viewer.js b/addons/mail/static/src/models/thread_view/thread_viewer.js index 3c643339eff..1e48e4ad805 100644 --- a/addons/mail/static/src/models/thread_view/thread_viewer.js +++ b/addons/mail/static/src/models/thread_view/thread_viewer.js @@ -13,7 +13,27 @@ function factory(dependencies) { //---------------------------------------------------------------------- /** - * @param {string} scrollTop + * @param {integer} scrollHeight + */ + saveThreadCacheScrollHeightAsInitial(scrollHeight) { + if (!this.threadCache) { + return; + } + if (this.chatter) { + // Initial scroll height is disabled for chatter because it is + // too complex to handle correctly and less important + // functionally. + return; + } + this.update({ + threadCacheInitialScrollHeights: Object.assign({}, this.threadCacheInitialScrollHeights, { + [this.threadCache.localId]: scrollHeight, + }), + }); + } + + /** + * @param {integer} scrollTop */ saveThreadCacheScrollPositionsAsInitial(scrollTop) { if (!this.threadCache) { @@ -230,6 +250,15 @@ function factory(dependencies) { 'thread', ], }), + /** + * Determines the initial scroll height of thread caches, which is the + * scroll height at the time the last scroll position was saved. + * Useful to only restore scroll position when the corresponding height + * is available, otherwise the restore makes no sense. + */ + threadCacheInitialScrollHeights: attr({ + default: {}, + }), /** * Determines the initial scroll positions of thread caches. * Useful to restore scroll position on changing back to this -- cgit v1.2.3