summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJérome Maes <jem@openerp.com>2015-08-24 15:50:47 +0200
committerAaron Bohy <aab@odoo.com>2015-09-01 20:58:12 +0200
commitfa2b555d749adc242c4e10fa35ed85817446296d (patch)
treed2a6a2895eded9f526b4da1fa3aa6da1cea291df
parent06f8e755a0bd3e12d62d048ca875ad5c5b1c9af7 (diff)
[FIX] mail_thread js : starred/needaction message don't disapear when re-rendering
-rw-r--r--addons/mail/static/src/js/mail_thread.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/addons/mail/static/src/js/mail_thread.js b/addons/mail/static/src/js/mail_thread.js
index a21dd71cd63..e448429bd45 100644
--- a/addons/mail/static/src/js/mail_thread.js
+++ b/addons/mail/static/src/js/mail_thread.js
@@ -598,22 +598,56 @@ var MailThreadMixin = {
* Trigger when clicking on selector '.o_mail_thread_message_star'.
*/
on_message_star: function(event){
+ var self = this;
var $source = this.$(event.currentTarget);
var mid = $source.data('message-id');
var is_starred = !$source.hasClass('o_mail_message_starred');
return this.MessageDatasetSearch.call('set_message_starred', [[mid], is_starred]).then(function(){
$source.toggleClass('fa-star-o fa-star o_mail_message_starred');
+ self._message_star([mid], $source.hasClass('o_mail_message_starred'));
return mid;
});
},
+ /**
+ * Star a formatted message in local
+ * @param Int[] message_ids : the identifiers of the message to set as (none-)starred by current user
+ * @param Boolean star : star or not the given messages
+ */
+ _message_star: function(message_ids, star){
+ _.each(this.get('messages'), function(m){
+ if(_.contains(message_ids, m.id)){
+ if(star){
+ m.is_starred = true;
+ m.starred_partner_ids.push(session.partner_id);
+ }else{
+ m.is_starred = false;
+ m.starred_partner_ids = _.without(m.starred_partner_ids, session.partner_id);
+ }
+ }
+ });
+ },
on_message_needaction: function(event){
+ var self = this;
var $source = this.$(event.currentTarget);
var mid = $source.data('message-id');
return this.MessageDatasetSearch.call('set_message_done', [[mid]]).then(function(){
$source.remove();
+ self._message_needaction([mid]);
return mid;
});
},
+ /**
+ * Make formatted messages a needaction
+ * @param Int[] message_ids : message ids to mark as needaction treated
+ */
+ _message_needaction: function(message_ids, needaction){
+ _.each(this.get('messages'), function(m){
+ if(_.contains(message_ids, m.id)){
+ m.is_needaction = false;
+ m.needaction_partner_ids = _.without(m.starred_partner_ids, session.partner_id);
+ }
+ });
+ },
// Message functions
/**
* Fetch given message