[FIX] mail: only prevent odoobot new messages during onboarding
Before this commit, new messages from odoobot were never opening a chat window automatically. This is desirable only during the onboarding process of the user, when first logging-in, as to not bully the new user. It is not intended to prevent all new messages from odoobot. This commit fixes the issue by only preventing auto-opening of chat window of odoobot for the 1st step of the onboarding process. closes odoo/odoo#132689 Signed-off-by: Louis Wicket (wil) <wil@odoo.com>
This commit is contained in:
@@ -98,6 +98,7 @@ export class Messaging {
|
|||||||
});
|
});
|
||||||
this.store.hasLinkPreviewFeature = data.hasLinkPreviewFeature;
|
this.store.hasLinkPreviewFeature = data.hasLinkPreviewFeature;
|
||||||
this.store.initBusId = data.initBusId;
|
this.store.initBusId = data.initBusId;
|
||||||
|
this.store.odoobotOnboarding = data.odoobotOnboarding;
|
||||||
this.isReady.resolve(data);
|
this.isReady.resolve(data);
|
||||||
this.store.isMessagingReady = true;
|
this.store.isMessagingReady = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ export class Store {
|
|||||||
|
|
||||||
/** @type {import("@mail/core/common/persona_model").Persona} */
|
/** @type {import("@mail/core/common/persona_model").Persona} */
|
||||||
odoobot = null;
|
odoobot = null;
|
||||||
|
odoobotOnboarding;
|
||||||
/** @type {Object.<number, import("@mail/core/common/persona_model").Persona>} */
|
/** @type {Object.<number, import("@mail/core/common/persona_model").Persona>} */
|
||||||
personas = {};
|
personas = {};
|
||||||
|
|
||||||
|
|||||||
@@ -48,13 +48,15 @@ export class DiscussCoreWeb {
|
|||||||
this.env.bus.addEventListener(
|
this.env.bus.addEventListener(
|
||||||
"discuss.channel/new_message",
|
"discuss.channel/new_message",
|
||||||
({ detail: { channel, message } }) => {
|
({ detail: { channel, message } }) => {
|
||||||
if (
|
if (this.ui.isSmall || message.isSelfAuthored) {
|
||||||
!this.ui.isSmall &&
|
return;
|
||||||
channel.correspondent !== this.store.odoobot &&
|
|
||||||
!message.isSelfAuthored
|
|
||||||
) {
|
|
||||||
this.chatWindowService.insert({ thread: channel });
|
|
||||||
}
|
}
|
||||||
|
if (channel.correspondent === this.store.odoobot && this.store.odoobotOnboarding) {
|
||||||
|
// this cancels odoobot onboarding auto-opening of chat window
|
||||||
|
this.store.odoobotOnboarding = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.chatWindowService.insert({ thread: channel });
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
this.busService.subscribe("mail.record/insert", (payload) => {
|
this.busService.subscribe("mail.record/insert", (payload) => {
|
||||||
|
|||||||
@@ -25,9 +25,13 @@ class Users(models.Model):
|
|||||||
return super().SELF_READABLE_FIELDS + ['odoobot_state']
|
return super().SELF_READABLE_FIELDS + ['odoobot_state']
|
||||||
|
|
||||||
def _init_messaging(self):
|
def _init_messaging(self):
|
||||||
|
odoobot_onboarding = False
|
||||||
if self.odoobot_state in [False, 'not_initialized'] and self._is_internal():
|
if self.odoobot_state in [False, 'not_initialized'] and self._is_internal():
|
||||||
|
odoobot_onboarding = True
|
||||||
self._init_odoobot()
|
self._init_odoobot()
|
||||||
return super()._init_messaging()
|
res = super()._init_messaging()
|
||||||
|
res['odoobotOnboarding'] = odoobot_onboarding
|
||||||
|
return res
|
||||||
|
|
||||||
def _init_odoobot(self):
|
def _init_odoobot(self):
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
|
|||||||
@@ -126,6 +126,7 @@ class TestDiscussFullPerformance(HttpCase):
|
|||||||
'hasLinkPreviewFeature': True,
|
'hasLinkPreviewFeature': True,
|
||||||
'needaction_inbox_counter': 1,
|
'needaction_inbox_counter': 1,
|
||||||
'starred_counter': 1,
|
'starred_counter': 1,
|
||||||
|
'odoobotOnboarding': False,
|
||||||
'channels': [
|
'channels': [
|
||||||
{
|
{
|
||||||
'authorizedGroupFullName': self.group_user.full_name,
|
'authorizedGroupFullName': self.group_user.full_name,
|
||||||
|
|||||||
Reference in New Issue
Block a user