diff --git a/client/src/components/chat-affix/registerMessagingSocketHandlers.js b/client/src/components/chat-affix/registerMessagingSocketHandlers.js index 41d65427d..56a2dbe70 100644 --- a/client/src/components/chat-affix/registerMessagingSocketHandlers.js +++ b/client/src/components/chat-affix/registerMessagingSocketHandlers.js @@ -353,22 +353,26 @@ export const registerMessagingHandlers = ({ socket, client }) => { id: client.cache.identify({ __typename: "conversations", id: conversationId }), fields: { job_conversations: (existing = []) => { - // Ensure no duplicates based on `jobid` - const existingIds = new Set( - existing.map( - (jc) => - client.cache.readFragment({ - id: client.cache.identify(jc), - fragment: gql` - fragment JobConversationId on job_conversations { - jobid - } - ` - })?.jobid - ) + // Ensure no duplicates based on both `conversationid` and `jobid` + const existingLinks = new Set( + existing.map((jc) => { + const jobId = client.cache.readFragment({ + id: client.cache.identify(jc), + fragment: gql` + fragment JobConversationLink on job_conversations { + jobid + conversationid + } + ` + })?.jobid; + return `${jobId}:${conversationId}`; // Unique identifier for a job-conversation link + }) ); - const newItems = formattedJobConversations.filter((jc) => !existingIds.has(jc.jobid)); + const newItems = formattedJobConversations.filter((jc) => { + const uniqueLink = `${jc.jobid}:${jc.conversationid}`; + return !existingLinks.has(uniqueLink); + }); return [...existing, ...newItems]; }