diff --git a/client/src/components/production-board-kanban/production-board-kanban.container.jsx b/client/src/components/production-board-kanban/production-board-kanban.container.jsx index 56fa10ac6..5bab6fe57 100644 --- a/client/src/components/production-board-kanban/production-board-kanban.container.jsx +++ b/client/src/components/production-board-kanban/production-board-kanban.container.jsx @@ -4,6 +4,7 @@ import React, { useEffect, useState } from "react"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { + QUERY_EXACT_JOBS_IN_PRODUCTION, QUERY_EXACT_JOB_IN_PRODUCTION, QUERY_JOBS_IN_PRODUCTION, SUBSCRIPTION_JOBS_IN_PRODUCTION, @@ -42,16 +43,23 @@ export function ProductionBoardKanbanContainer({ bodyshop, currentUser }) { if (!updatedJobs || joblist.length === 0) return; const jobDiff = _.differenceWith( - updatedJobs.jobs, joblist, + updatedJobs.jobs, (a, b) => a.id === b.id && a.updated_at === b.updated_at ); jobDiff.forEach((job) => { getUpdatedJobData(job.id); }); + if (jobDiff.length > 1) { + getUpdatedJobsData(jobDiff.map((j) => j.id)); + } else if (jobDiff.length === 1) { + jobDiff.forEach((job) => { + getUpdatedJobData(job.id); + }); + } - setJoblist(updatedJobs); + setJoblist(updatedJobs.jobs); // eslint-disable-next-line react-hooks/exhaustive-deps }, [updatedJobs]); @@ -61,6 +69,12 @@ export function ProductionBoardKanbanContainer({ bodyshop, currentUser }) { variables: { id: jobId }, }); }; + const getUpdatedJobsData = async (jobIds) => { + client.query({ + query: QUERY_EXACT_JOBS_IN_PRODUCTION, + variables: { ids: jobIds }, + }); + }; const { loading: associationSettingsLoading, data: associationSettings } = useQuery(QUERY_KANBAN_SETTINGS, { diff --git a/client/src/components/production-list-table/production-list-table.container.jsx b/client/src/components/production-list-table/production-list-table.container.jsx index c13999733..1a7577d16 100644 --- a/client/src/components/production-list-table/production-list-table.container.jsx +++ b/client/src/components/production-list-table/production-list-table.container.jsx @@ -1,6 +1,7 @@ import { useApolloClient, useQuery, useSubscription } from "@apollo/client"; import React, { useEffect, useState } from "react"; import { + QUERY_EXACT_JOBS_IN_PRODUCTION, QUERY_EXACT_JOB_IN_PRODUCTION, QUERY_JOBS_IN_PRODUCTION, SUBSCRIPTION_JOBS_IN_PRODUCTION, @@ -31,16 +32,22 @@ export default function ProductionListTableContainer() { if (!updatedJobs || joblist.length === 0) return; const jobDiff = _.differenceWith( - updatedJobs.jobs, joblist, + updatedJobs.jobs, (a, b) => a.id === b.id && a.updated_at === b.updated_at ); + console.log(jobDiff); + if (jobDiff.length > 1) { + getUpdatedJobsData(jobDiff.map((j) => j.id)); + } else if (jobDiff.length === 1) { + console.log("length was 1"); + jobDiff.forEach((job) => { + console.log("Job ", job); + getUpdatedJobData(job.id); + }); + } - jobDiff.forEach((job) => { - getUpdatedJobData(job.id); - }); - - setJoblist(updatedJobs); + setJoblist(updatedJobs.jobs); // eslint-disable-next-line react-hooks/exhaustive-deps }, [updatedJobs]); @@ -50,6 +57,12 @@ export default function ProductionListTableContainer() { variables: { id: jobId }, }); }; + const getUpdatedJobsData = async (jobIds) => { + client.query({ + query: QUERY_EXACT_JOBS_IN_PRODUCTION, + variables: { ids: jobIds }, + }); + }; return (