From 3f907b02b07fd63efd5275eeec0bf8e406ae61c8 Mon Sep 17 00:00:00 2001 From: david Date: Mon, 18 Apr 2022 11:52:29 +0200 Subject: [PATCH] [FIX] mail_activity_team: activity count The user couldn't see the proper count of his own activities. It was allways showing the team activities counter. TT35885 --- mail_activity_team/models/res_users.py | 2 +- mail_activity_team/static/src/js/systray.js | 37 +++++++++------------ 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/mail_activity_team/models/res_users.py b/mail_activity_team/models/res_users.py index 297a4720a..b0a74c7e6 100644 --- a/mail_activity_team/models/res_users.py +++ b/mail_activity_team/models/res_users.py @@ -14,7 +14,7 @@ class ResUsers(models.Model): @api.model def systray_get_activities(self): - if not self._context.get("team_activities", False): + if not self.env.context.get("team_activities"): return super().systray_get_activities() query = """SELECT m.id, count(*), act.res_model as model, CASE diff --git a/mail_activity_team/static/src/js/systray.js b/mail_activity_team/static/src/js/systray.js index 331b06e83..fb9d8e0eb 100644 --- a/mail_activity_team/static/src/js/systray.js +++ b/mail_activity_team/static/src/js/systray.js @@ -13,9 +13,11 @@ odoo.define("mail_activity_team.systray.ActivityMenu", function(require) { this.$filter_buttons = this.$(".o_filter_button"); this.$my_activities = this.$filter_buttons.first(); this.filter = "my"; - session.user_context = _.extend({}, session.user_context, { - team_activities: false, - }); + this._update_team_activities_context(); + }, + + _update_team_activities_context: function() { + session.user_context.team_activities = this.filter === "team"; }, _updateCounter: function(data) { @@ -24,18 +26,13 @@ odoo.define("mail_activity_team.systray.ActivityMenu", function(require) { }, _onClickFilterButton: function(event) { - var self = this; event.stopPropagation(); - self.$filter_buttons.removeClass("active"); + this.$filter_buttons.removeClass("active"); var $target = $(event.currentTarget); $target.addClass("active"); - self.filter = $target.data("filter"); - - session.user_context = _.extend({}, session.user_context, { - team_activities: self.filter === "team", - }); - - self._updateActivityPreview(); + this.filter = $target.data("filter"); + this._update_team_activities_context(); + this._updateActivityPreview(); }, _onActivityFilterClick: function(event) { if (this.filter === "my") { @@ -63,7 +60,7 @@ odoo.define("mail_activity_team.systray.ActivityMenu", function(require) { [false, "form"], ], search_view_id: [false], - domain: [["activity_team_user_ids", "in", session.uid]], + domain: [["activity_team_user_ids", "in", [session.uid]]], context: context, }); } @@ -75,12 +72,11 @@ odoo.define("mail_activity_team.systray.ActivityMenu", function(require) { return this._super.apply(this, arguments); }, _getActivityData: function() { + if (this.filter !== "team") { + return this._super.apply(this, arguments); + } var self = this; return self._super.apply(self, arguments).then(function() { - session.user_context = _.extend({}, session.user_context, { - team_activities: !session.user_context.team_activities, - }); - self._rpc({ model: "res.users", method: "systray_get_activities", @@ -89,7 +85,7 @@ odoo.define("mail_activity_team.systray.ActivityMenu", function(require) { context: session.user_context, }, }).then(function(data) { - self.activityCounter += _.reduce( + self.activityCounter = _.reduce( data, function(total_count, p_data) { return total_count + p_data.total_count || 0; @@ -98,9 +94,8 @@ odoo.define("mail_activity_team.systray.ActivityMenu", function(require) { ); self.$(".o_notification_counter").text(self.activityCounter); self.$el.toggleClass("o_no_notification", !self.activityCounter); - session.user_context = _.extend({}, session.user_context, { - team_activities: !session.user_context.team_activities, - }); + // Unset context after we gather the info to avoid side effects + session.user_context.team_activities = false; }); }); },