diff --git a/client/src/components/task-list/task-list.container.jsx b/client/src/components/task-list/task-list.container.jsx index 904b0e15f..a081f8b1d 100644 --- a/client/src/components/task-list/task-list.container.jsx +++ b/client/src/components/task-list/task-list.container.jsx @@ -4,7 +4,7 @@ import { useMutation, useQuery } from "@apollo/client"; import { MUTATION_TOGGLE_TASK_COMPLETED, MUTATION_TOGGLE_TASK_DELETED } from "../../graphql/tasks.queries.js"; import { pageLimit } from "../../utils/config.js"; import AlertComponent from "../alert/alert.component.jsx"; -import React from "react"; +import React, { useContext, useEffect } from "react"; import TaskListComponent from "./task-list.component.jsx"; import { notification } from "antd"; import { useTranslation } from "react-i18next"; @@ -14,6 +14,7 @@ import AuditTrailMapping from "../../utils/AuditTrailMappings.js"; import { createStructuredSelector } from "reselect"; import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors.js"; import dayjs from "../../utils/day"; +import { SharedModalContext } from "../../providers/shared-modal.provider.jsx"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, @@ -40,6 +41,8 @@ export function TaskListContainer({ const searchParams = queryString.parse(useLocation().search); const { page, sortcolumn, sortorder, deleted, completed, mine } = searchParams; const dispatch = useDispatch(); + const { updateTaskQuery } = useContext(SharedModalContext); // Use the context + const { loading, error, data, refetch } = useQuery(query[Object.keys(query)[0]], { fetchPolicy: "network-only", nextFetchPolicy: "network-only", @@ -163,6 +166,11 @@ export function TaskListContainer({ } }; + // Update the Last Task Paginated Query + useEffect(() => { + updateTaskQuery(Object.keys(query)[0]); + }, [query]); + if (error) return ; return ( diff --git a/client/src/components/task-upsert-modal/task-upsert-modal.container.jsx b/client/src/components/task-upsert-modal/task-upsert-modal.container.jsx index d4dc369e9..1370a77a0 100644 --- a/client/src/components/task-upsert-modal/task-upsert-modal.container.jsx +++ b/client/src/components/task-upsert-modal/task-upsert-modal.container.jsx @@ -1,6 +1,6 @@ import { useMutation, useQuery } from "@apollo/client"; import { Form, Modal, notification } from "antd"; -import React, { useEffect, useState } from "react"; +import React, { useContext, useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; @@ -17,6 +17,7 @@ import dayjs from "../../utils/day"; import { insertAuditTrail } from "../../redux/application/application.actions.js"; import AuditTrailMapping from "../../utils/AuditTrailMappings.js"; import { isEqual } from "lodash"; +import { SharedModalContext } from "../../providers/shared-modal.provider.jsx"; const mapStateToProps = createStructuredSelector({ currentUser: selectCurrentUser, @@ -46,6 +47,7 @@ export function TaskUpsertModalContainer({ bodyshop, currentUser, taskUpsert, to variables: { id: jobIdState }, skip: !jobIdState }); + const { taskQuery } = useContext(SharedModalContext); const { loading: taskLoading, @@ -133,6 +135,8 @@ export function TaskUpsertModalContainer({ bodyshop, currentUser, taskUpsert, to // We have a relationship query, so we need to refetch the query if (query && Object.keys(query).length) { taskObject.refetchQueries.push(Object.keys(query)[0]); + } else if (taskQuery) { + taskObject.refetchQueries.push(taskQuery); } const taskData = await updateTask(taskObject); @@ -203,6 +207,8 @@ export function TaskUpsertModalContainer({ bodyshop, currentUser, taskUpsert, to // We have a relationship query, so we need to refetch the query if (query && Object.keys(query).length) { newTaskObject.refetchQueries.push(Object.keys(query)[0]); + } else if (taskQuery) { + newTaskObject.refetchQueries.push(taskQuery); } const newTaskData = await insertTask(newTaskObject); diff --git a/client/src/graphql/jobs.queries.js b/client/src/graphql/jobs.queries.js index d78f7904a..088c92ddb 100644 --- a/client/src/graphql/jobs.queries.js +++ b/client/src/graphql/jobs.queries.js @@ -2087,7 +2087,7 @@ export const DELETE_JOB = gql` `; export const QUERY_GET_TASKS_JOB_DETAILS_BY_ID = gql` - query GetTasksJobDetailsById($id: uuid!) { + query QUERY_GET_TASKS_JOB_DETAILS_BY_ID($id: uuid!) { jobs_by_pk(id: $id) { id joblines { diff --git a/client/src/pages/manage/manage.page.component.jsx b/client/src/pages/manage/manage.page.component.jsx index d0f5ffeb4..67dd45e53 100644 --- a/client/src/pages/manage/manage.page.component.jsx +++ b/client/src/pages/manage/manage.page.component.jsx @@ -27,6 +27,7 @@ import { setJoyRideFinished } from "../../redux/application/application.actions. import { selectEnableJoyRide, selectJoyRideSteps } from "../../redux/application/application.selectors.js"; import InstanceRenderManager from "../../utils/instanceRenderMgr.js"; import "./manage.page.styles.scss"; +import { SharedModalProvider } from "../../providers/shared-modal.provider.jsx"; const JobsPage = lazy(() => import("../jobs/jobs.page")); @@ -151,424 +152,425 @@ export function Manage({ conflict, bodyshop, enableJoyRide, joyRideSteps, setJoy /> } > - + + + + + + + + + + + + + + } /> + } /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + { + // } + // /> + } + }> + + + } + /> + }> + + + } + /> - - - - - - - - - - - - } /> - } /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - { - // } - // /> - } - }> - - - } - /> - }> - - - } - /> + }> + + + } + /> - }> - - - } - /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - } /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + } /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + + ); diff --git a/client/src/providers/shared-modal.provider.jsx b/client/src/providers/shared-modal.provider.jsx new file mode 100644 index 000000000..c74ba1b07 --- /dev/null +++ b/client/src/providers/shared-modal.provider.jsx @@ -0,0 +1,14 @@ +import React from "react"; + +// Create a context +export const SharedModalContext = React.createContext({}); + +export const SharedModalProvider = ({ children }) => { + const [taskQuery, setTaskQuery] = React.useState([]); + + const updateTaskQuery = (query) => { + setTaskQuery(query); + }; + + return {children}; +};