diff options
Diffstat (limited to 'app/assets/javascripts/jobs/components/table/graphql')
-rw-r--r-- | app/assets/javascripts/jobs/components/table/graphql/cache_config.js | 30 | ||||
-rw-r--r-- | app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql | 1 |
2 files changed, 28 insertions, 3 deletions
diff --git a/app/assets/javascripts/jobs/components/table/graphql/cache_config.js b/app/assets/javascripts/jobs/components/table/graphql/cache_config.js index b9946925c95..8bcd7ffd10f 100644 --- a/app/assets/javascripts/jobs/components/table/graphql/cache_config.js +++ b/app/assets/javascripts/jobs/components/table/graphql/cache_config.js @@ -13,16 +13,40 @@ export default { merge(existing = {}, incoming, { args = {} }) { let nodes; + const areNodesEqual = isEqual(existing.nodes, incoming.nodes); + const statuses = Array.isArray(args.statuses) ? [...args.statuses] : args.statuses; + const { pageInfo } = incoming; + if (Object.keys(existing).length !== 0 && isEqual(existing?.statuses, args?.statuses)) { - nodes = [...existing.nodes, ...incoming.nodes]; + if (areNodesEqual) { + if (incoming.pageInfo.hasNextPage) { + nodes = [...existing.nodes, ...incoming.nodes]; + } else { + nodes = [...incoming.nodes]; + } + } else { + if (!existing.pageInfo?.hasNextPage) { + nodes = [...incoming.nodes]; + + return { + nodes, + statuses, + pageInfo, + count: incoming.count, + }; + } + + nodes = [...existing.nodes, ...incoming.nodes]; + } } else { nodes = [...incoming.nodes]; } return { nodes, - statuses: Array.isArray(args.statuses) ? [...args.statuses] : args.statuses, - pageInfo: incoming.pageInfo, + statuses, + pageInfo, + count: incoming.count, }; }, }, diff --git a/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql b/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql index 151e49af87e..f3ca958b3ca 100644 --- a/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql +++ b/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql @@ -3,6 +3,7 @@ query getJobs($fullPath: ID!, $after: String, $statuses: [CiJobStatus!]) { id __typename jobs(after: $after, first: 30, statuses: $statuses) { + count pageInfo { endCursor hasNextPage |