Browse Source

Merge pull request #689 from hbrunn/8.0-web_menu_navbar_needaction-give_up_early

[IMP] stop hammering the server when our call caused a problem
pull/158/head
Pedro M. Baeza 6 years ago
committed by GitHub
parent
commit
d5251f7326
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 27
      web_menu_navbar_needaction/static/src/js/web_menu_navbar_needaction.js

27
web_menu_navbar_needaction/static/src/js/web_menu_navbar_needaction.js

@ -30,18 +30,25 @@ openerp.web_menu_navbar_needaction = function(instance)
new instance.web.Model('ir.config_parameter') new instance.web.Model('ir.config_parameter')
.call('get_param', .call('get_param',
['web_menu_navbar_needaction.refresh_timeout']) ['web_menu_navbar_needaction.refresh_timeout'])
.then(self.proxy(self.refresh_navbar_needaction))
.then(self.proxy(self.set_interval_navbar_needaction))
}); });
return result; return result;
}, },
refresh_navbar_needaction: function(timeout)
set_interval_navbar_needaction: function(timeout)
{ {
if(parseInt(timeout, 10)) if(parseInt(timeout, 10))
{ {
setTimeout(this.proxy(this.refresh_navbar_needaction), timeout, timeout);
this.navbar_needaction_timer = setInterval(
this.proxy(this.load_navbar_needaction), timeout
);
} }
return this.load_navbar_needaction(); return this.load_navbar_needaction();
}, },
clear_interval_navbar_needaction: function(error, ev)
{
clearInterval(this.navbar_needaction_timer);
ev.preventDefault();
},
load_navbar_needaction: function() load_navbar_needaction: function()
{ {
this.navbar_menu_ids = this.$el.parents('body') this.navbar_menu_ids = this.$el.parents('body')
@ -52,7 +59,8 @@ openerp.web_menu_navbar_needaction = function(instance)
return new instance.web.Model('ir.ui.menu') return new instance.web.Model('ir.ui.menu')
.call('get_navbar_needaction_data', [this.navbar_menu_ids], .call('get_navbar_needaction_data', [this.navbar_menu_ids],
{}, {shadow: true}) {}, {shadow: true})
.then(this.proxy(this.process_navbar_needaction));
.then(this.proxy(this.process_navbar_needaction))
.fail(this.proxy(this.clear_interval_navbar_needaction));
}, },
process_navbar_needaction: function(data) process_navbar_needaction: function(data)
{ {
@ -120,12 +128,17 @@ openerp.web_menu_navbar_needaction = function(instance)
}) })
instance.mail.Thread.include({ instance.mail.Thread.include({
message_fetch_set_read: function (message_list)
message_fetch_set_read: function(message_list)
{ {
this._super.apply(this, arguments); this._super.apply(this, arguments);
return this.render_mutex.exec(function()
return this.message_fetch_set_read_navbar_needaction(message_list);
},
message_fetch_set_read_navbar_needaction: function()
{
// don't return the deferred object, this should be asynchronous
this.render_mutex.exec(function()
{ {
instance.client.menu.refresh_navbar_needaction();
instance.client.menu.load_navbar_needaction();
}); });
}, },
}) })

Loading…
Cancel
Save