diff options
Diffstat (limited to 'addons/mail/static/src/components/thread_view')
| -rw-r--r-- | addons/mail/static/src/components/thread_view/thread_view.js | 20 | ||||
| -rw-r--r-- | addons/mail/static/src/components/thread_view/thread_view.xml | 1 |
2 files changed, 18 insertions, 3 deletions
diff --git a/addons/mail/static/src/components/thread_view/thread_view.js b/addons/mail/static/src/components/thread_view/thread_view.js index a6109aa4e1c..8a4898d6f3a 100644 --- a/addons/mail/static/src/components/thread_view/thread_view.js +++ b/addons/mail/static/src/components/thread_view/thread_view.js @@ -5,6 +5,7 @@ const components = { Composer: require('mail/static/src/components/composer/composer.js'), MessageList: require('mail/static/src/components/message_list/message_list.js'), }; +const useShouldUpdateBasedOnProps = require('mail/static/src/component_hooks/use_should_update_based_on_props/use_should_update_based_on_props.js'); const useStore = require('mail/static/src/component_hooks/use_store/use_store.js'); const useUpdate = require('mail/static/src/component_hooks/use_update/use_update.js'); @@ -18,6 +19,7 @@ class ThreadView extends Component { */ constructor(...args) { super(...args); + useShouldUpdateBasedOnProps(); useStore((...args) => this._useStoreSelector(...args)); useUpdate({ func: () => this._update() }); /** @@ -121,11 +123,18 @@ class ThreadView extends Component { const threadView = this.env.models['mail.thread_view'].get(props.threadViewLocalId); const thread = threadView ? threadView.thread : undefined; const threadCache = threadView ? threadView.threadCache : undefined; + const correspondent = thread && thread.correspondent; return { + composer: thread && thread.composer, + correspondentId: correspondent && correspondent.id, isDeviceMobile: this.env.messaging.device.isMobile, - thread: thread ? thread.__state : undefined, - threadCache: threadCache ? threadCache.__state : undefined, - threadView: threadView ? threadView.__state : undefined, + thread, + threadCacheIsLoaded: threadCache && threadCache.isLoaded, + threadIsTemporary: thread && thread.isTemporary, + threadMassMailing: thread && thread.mass_mailing, + threadModel: thread && thread.model, + threadView, + threadViewIsLoading: threadView && threadView.isLoading, }; } @@ -140,6 +149,7 @@ Object.assign(ThreadView, { hasSquashCloseMessages: false, haveMessagesMarkAsReadIcon: false, haveMessagesReplyIcon: false, + isDoFocus: false, order: 'asc', showComposerAttachmentsExtensions: true, showComposerAttachmentsFilenames: true, @@ -175,6 +185,10 @@ Object.assign(ThreadView, { hasSquashCloseMessages: Boolean, haveMessagesMarkAsReadIcon: Boolean, haveMessagesReplyIcon: Boolean, + /** + * Determines whether this should become focused. + */ + isDoFocus: Boolean, order: { type: String, validate: prop => ['asc', 'desc'].includes(prop), diff --git a/addons/mail/static/src/components/thread_view/thread_view.xml b/addons/mail/static/src/components/thread_view/thread_view.xml index 70de1057f0f..99c78279adc 100644 --- a/addons/mail/static/src/components/thread_view/thread_view.xml +++ b/addons/mail/static/src/components/thread_view/thread_view.xml @@ -35,6 +35,7 @@ hasSendButton="props.hasComposerSendButton" hasThreadTyping="props.hasComposerThreadTyping" isCompact="(threadView.thread.model === 'mail.channel' and threadView.thread.mass_mailing) ? false : undefined" + isDoFocus="props.isDoFocus" showAttachmentsExtensions="props.showComposerAttachmentsExtensions" showAttachmentsFilenames="props.showComposerAttachmentsFilenames" textInputSendShortcuts="(threadView.thread.model === 'mail.channel' and threadView.thread.mass_mailing) ? ['ctrl-enter', 'meta-enter'] : ['enter']" |
