diff --git a/addons/im_livechat/static/src/core/thread_service_patch.js b/addons/im_livechat/static/src/core/thread_service_patch.js index 849b34e4a21..7f11f919dd1 100644 --- a/addons/im_livechat/static/src/core/thread_service_patch.js +++ b/addons/im_livechat/static/src/core/thread_service_patch.js @@ -10,8 +10,8 @@ patch(ThreadService.prototype, "im_livechat", { const isUnknown = !(createLocalId(data.model, data.id) in this.store.threads); const thread = this._super(data); if (thread.type === "livechat") { - if (data.serverData?.channel) { - assignDefined(thread, data.serverData.channel, ["anonymous_name"]); + if (data?.channel) { + assignDefined(thread, data.channel, ["anonymous_name"]); } if (isUnknown) { this.store.discuss.livechat.threads.push(thread.localId); diff --git a/addons/mail/static/src/core/messaging_service.js b/addons/mail/static/src/core/messaging_service.js index e5a673be6d3..6339d71b536 100644 --- a/addons/mail/static/src/core/messaging_service.js +++ b/addons/mail/static/src/core/messaging_service.js @@ -221,9 +221,7 @@ export class Messaging { ...channel, model: "discuss.channel", rtcSessions: undefined, - serverData: { - channel: channel.channel, - }, + channel: channel.channel, type: channel.channel.channel_type, }); const rtcSessions = channel.rtcSessions; @@ -243,8 +241,8 @@ export class Messaging { this.threadService.insert({ id: notif.payload.channel.id, model: "discuss.channel", - serverData: notif.payload, type: notif.payload.channel.channel_type, + ...notif.payload, }); break; case "discuss.channel/transient_message": { @@ -459,7 +457,7 @@ export class Messaging { const { id, last_interest_dt } = notif.payload; const channel = this.store.threads[createLocalId("discuss.channel", id)]; if (channel) { - this.threadService.update(channel, { serverData: { last_interest_dt } }); + this.threadService.update(channel, { last_interest_dt }); } if (["chat", "group"].includes(channel?.type)) { this.threadService.sortChannels(); @@ -472,10 +470,9 @@ export class Messaging { if (!channel || !channel.type) { const [channelData] = await this.orm.call("discuss.channel", "channel_info", [id]); channel = this.threadService.insert({ - id: channelData.id, model: "discuss.channel", type: channelData.channel.channel_type, - serverData: channelData, + ...channelData, }); } if (!channel.is_pinned) { @@ -544,23 +541,14 @@ export class Messaging { _handleNotificationRecordInsert(notif) { if (notif.payload.Thread) { - this.threadService.insert({ - id: notif.payload.Thread.id, - model: notif.payload.Thread.model, - serverData: notif.payload.Thread, - }); + this.threadService.insert(notif.payload.Thread); } if (notif.payload.Channel) { this.threadService.insert({ id: notif.payload.Channel.id, model: "discuss.channel", - serverData: { - channel: { - avatarCacheKey: notif.payload.Channel.avatarCacheKey, - ...notif.payload.Channel, - }, - }, + channel: notif.payload.Channel, }); } if (notif.payload.RtcSession) { diff --git a/addons/mail/static/src/core/thread_model.js b/addons/mail/static/src/core/thread_model.js index 2a7450a55a0..660d0daab52 100644 --- a/addons/mail/static/src/core/thread_model.js +++ b/addons/mail/static/src/core/thread_model.js @@ -133,6 +133,7 @@ export class Thread { _store: store, }); store.threads[this.localId] = this; + return store.threads[this.localId]; } get accessRestrictedToGroupText() { diff --git a/addons/mail/static/src/core/thread_service.js b/addons/mail/static/src/core/thread_service.js index 884878a93cc..069fb535742 100644 --- a/addons/mail/static/src/core/thread_service.js +++ b/addons/mail/static/src/core/thread_service.js @@ -58,21 +58,13 @@ export class ThreadService { * @returns {Thread} */ createChannelThread(serverData) { - const { id, name, description, channel, uuid, authorizedGroupFullName } = serverData; - const type = channel.channel_type; - const channelType = serverData.channel.channel_type; - const isAdmin = - channelType !== "group" && serverData.create_uid === this.store.user?.user?.id; const thread = this.insert({ - id, + ...serverData, model: "discuss.channel", - name, - type, - description, - serverData: serverData, - isAdmin, - uuid, - authorizedGroupFullName, + type: serverData.channel.channel_type, + isAdmin: + serverData.channel.channel_type !== "group" && + serverData.create_uid === this.store.user?.user?.id, }); return thread; } @@ -582,7 +574,7 @@ export class ThreadService { model: "discuss.channel", name, type: "channel", - serverData: { channel: { avatarCacheKey: "hello" } }, + channel: { avatarCacheKey: "hello" }, }); this.sortChannels(); this.open(thread); @@ -594,11 +586,9 @@ export class ThreadService { partners_to: [id], }); return this.insert({ - id: data.id, + ...data, model: "discuss.channel", - name: undefined, type: "chat", - serverData: data, }); } @@ -681,8 +671,8 @@ export class ThreadService { * @param {Object} data */ update(thread, data) { - const { attachments, serverData, ...remainingData } = data; - assignDefined(thread, remainingData); + const { id, name, attachments, description, ...serverData } = data; + assignDefined(thread, { id, name, description }); if (attachments) { // smart process to avoid triggering reactives when there is no change between the 2 arrays replaceArrayWithCompare( @@ -698,10 +688,15 @@ export class ThreadService { "description", "hasWriteAccess", "is_pinned", + "isLoaded", + "isLoadingAttachments", + "mainAttachment", + "message_unread_counter", "message_needaction_counter", "name", "seen_message_id", "state", + "type", "group_based_subscription", "last_interest_dt", "defaultDisplayMode", @@ -845,7 +840,7 @@ export class ThreadService { this.update(thread, data); return thread; } - let thread = new Thread(this.store, data); + const thread = new Thread(this.store, data); onChange(thread, "isLoaded", () => thread.isLoadedDeferred.resolve()); onChange(thread, "channelMembers", () => this.store.updateBusSubscription()); onChange(thread, "is_pinned", () => { @@ -853,7 +848,6 @@ export class ThreadService { this.store.discuss.threadLocalId = null; } }); - thread = this.store.threads[thread.localId] = thread; this.update(thread, data); this.insertComposer({ thread }); return thread; diff --git a/addons/mail/static/src/public/discuss_public.js b/addons/mail/static/src/public/discuss_public.js index ca7f2445d02..2c935720f97 100644 --- a/addons/mail/static/src/public/discuss_public.js +++ b/addons/mail/static/src/public/discuss_public.js @@ -54,7 +54,7 @@ export class DiscussPublic extends Component { id: this.props.data.channelData.id, model: "discuss.channel", type: this.props.data.channelData.channel.channel_type, - serverData: { uuid: this.props.data.channelData.uuid }, + uuid: this.props.data.channelData.uuid, }); } } diff --git a/addons/mail/static/src/rtc/call_participant_card.js b/addons/mail/static/src/rtc/call_participant_card.js index e1e740a0050..5f5e31c4e5a 100644 --- a/addons/mail/static/src/rtc/call_participant_card.js +++ b/addons/mail/static/src/rtc/call_participant_card.js @@ -107,9 +107,7 @@ export class CallParticipantCard extends Component { member_ids: [this.channelMember.id], }); this.threadService.update(this.props.thread, { - serverData: { - invitedMembers: channelData.invitedMembers, - }, + invitedMembers: channelData.invitedMembers, }); } diff --git a/addons/mail/static/src/rtc/rtc_service.js b/addons/mail/static/src/rtc/rtc_service.js index fc67dc1207e..c7b58f163a0 100644 --- a/addons/mail/static/src/rtc/rtc_service.js +++ b/addons/mail/static/src/rtc/rtc_service.js @@ -738,12 +738,7 @@ export class Rtc { this.clear(); this.state.logs.clear(); this.state.channel = channel; - this.threadService.update(this.state.channel, { - serverData: { - rtcSessions, - invitedMembers, - }, - }); + this.threadService.update(this.state.channel, { rtcSessions, invitedMembers }); this.state.selfSession = this.store.rtcSessions[sessionId]; this.state.iceServers = iceServers || DEFAULT_ICE_SERVERS; this.state.logs.set("channelId", this.state.channel?.id); diff --git a/addons/website_livechat/static/src/core/thread_service_patch.js b/addons/website_livechat/static/src/core/thread_service_patch.js index 3aeebc130d5..3204323a218 100644 --- a/addons/website_livechat/static/src/core/thread_service_patch.js +++ b/addons/website_livechat/static/src/core/thread_service_patch.js @@ -7,9 +7,9 @@ import { patch } from "@web/core/utils/patch"; patch(ThreadService.prototype, "website_livechat", { update(thread, data) { this._super(thread, data); - if (data.serverData?.visitor) { + if (data?.visitor) { thread.visitor = this.personaService.insert({ - ...data.serverData.visitor, + ...data.visitor, type: "visitor", }); } diff --git a/addons/website_livechat/static/src/core/website_livechat_notification_handler.js b/addons/website_livechat/static/src/core/website_livechat_notification_handler.js index 3407a183ee0..bd408d429a4 100644 --- a/addons/website_livechat/static/src/core/website_livechat_notification_handler.js +++ b/addons/website_livechat/static/src/core/website_livechat_notification_handler.js @@ -17,7 +17,6 @@ export const websiteLivechatNotifications = { ...payload, id: payload.id, model: "discuss.channel", - serverData: payload, type: payload.channel.channel_type, }); const chatWindow = chatWindowService.insert({ thread: channel });