summaryrefslogtreecommitdiff
path: root/addons/sms/static/src/js/thread_widget.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/sms/static/src/js/thread_widget.js')
-rw-r--r--addons/sms/static/src/js/thread_widget.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/addons/sms/static/src/js/thread_widget.js b/addons/sms/static/src/js/thread_widget.js
new file mode 100644
index 00000000000..4655732b34d
--- /dev/null
+++ b/addons/sms/static/src/js/thread_widget.js
@@ -0,0 +1,89 @@
+odoo.define('sms.widget.Thread', function (require) {
+"use strict";
+
+var ThreadWidget = require('mail.widget.Thread');
+var core = require('web.core');
+
+var QWeb = core.qweb;
+
+ThreadWidget.include({
+ events: _.extend({}, ThreadWidget.prototype.events, {
+ 'click .o_thread_message_sms_error': '_onClickSMSError'
+ }),
+ /**
+ * @override
+ */
+ init: function () {
+ this._super.apply(this, arguments);
+ this._enabledOptions = _.defaults(this._enabledOptions, {
+ displaySmsIcons: true,
+ });
+ this._disabledOptions = _.defaults(this._disabledOptions, {
+ displaySmsIcons: false,
+ });
+ },
+ /**
+ * @override
+ */
+ render: function (thread, options) {
+ this._super.apply(this, arguments);
+ var messages = _.clone(thread.getMessages({domain: options.domain || []}));
+ this._renderMessageSmsPopover(messages);
+ },
+
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * Render the popover when mouse-hovering on the mail icon of a message
+ * in the thread. There is at most one such popover at any given time.
+ *
+ * @private
+ * @param {mail.model.AbstractMessage[]} messages list of messages in the
+ * rendered thread, for which popover on mouseover interaction is
+ * permitted.
+ */
+ _renderMessageSmsPopover: function (messages) {
+ if (this._messageSmsPopover) {
+ this._messageSmsPopover.popover('hide');
+ }
+ if (!this.$('.o_thread_sms_tooltip').length) {
+ return;
+ }
+ this._messageSmsPopover = this.$('.o_thread_sms_tooltip').popover({
+ html: true,
+ boundary: 'viewport',
+ placement: 'auto',
+ trigger: 'hover',
+ offset: '0, 1',
+ content: function () {
+ var messageID = $(this).data('message-id');
+ var message = _.find(messages, function (message) {
+ return message.getID() === messageID;
+ });
+ return QWeb.render('sms.widget.Thread.Message.SmsTooltip', {
+ data: message.getSmsIds()
+ });
+ },
+ });
+ },
+
+ //--------------------------------------------------------------------------
+ // Handlers
+ //--------------------------------------------------------------------------
+
+ /**
+ * @private
+ * @param {MouseEvent} ev
+ */
+ _onClickSMSError: function (ev) {
+ var messageID = $(ev.currentTarget).data('message-id');
+ this.do_action('sms.sms_resend_action', {
+ additional_context: {
+ default_mail_message_id: messageID
+ }
+ });
+ },
+});
+});