Merged in release/2024-12-06 (pull request #1988)

feature/IO-3048-Fix-Job-Bug-Messaging - Do not allow more than 1 of the same job to be associated with a conversation
This commit is contained in:
Dave Richer
2024-12-03 18:41:31 +00:00

View File

@@ -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];
}