diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-01-06 18:08:20 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-01-06 18:08:20 +0300 |
commit | a9524ab189e8340e0b6ea64a1355b9484d1d9731 (patch) | |
tree | 0a89643db007329ca3c1930c58d34e0e657f0601 /app/assets/javascripts/graphql_shared | |
parent | 53fb4ad16325d4963fdc5396b8510ab748a45e50 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/graphql_shared')
-rw-r--r-- | app/assets/javascripts/graphql_shared/issuable_client.js | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/app/assets/javascripts/graphql_shared/issuable_client.js b/app/assets/javascripts/graphql_shared/issuable_client.js index 15e7ef7d62c..adc6df09b30 100644 --- a/app/assets/javascripts/graphql_shared/issuable_client.js +++ b/app/assets/javascripts/graphql_shared/issuable_client.js @@ -5,6 +5,7 @@ import { concatPagination } from '@apollo/client/utilities'; import getIssueStateQuery from '~/issues/show/queries/get_issue_state.query.graphql'; import createDefaultClient from '~/lib/graphql'; import typeDefs from '~/work_items/graphql/typedefs.graphql'; +import { WIDGET_TYPE_NOTES } from '~/work_items/constants'; export const config = { typeDefs, @@ -22,10 +23,20 @@ export const config = { }, }, }, + WorkItemWidgetNotes: { + fields: { + // If we add any key args, the discussions field becomes discussions({"filter":"ONLY_ACTIVITY","first":10}) and + // kills any possibility to handle it on the widget level without hardcoding a string. + discussions: { + keyArgs: false, + }, + }, + }, WorkItem: { fields: { + // widgets policy because otherwise the subscriptions invalidate the cache widgets: { - merge(existing = [], incoming) { + merge(existing = [], incoming, context) { if (existing.length === 0) { return incoming; } @@ -33,6 +44,24 @@ export const config = { const incomingWidget = incoming.find( (w) => w.type && w.type === existingWidget.type, ); + // We don't want to override existing notes with empty widget on work item updates + if (incomingWidget?.type === WIDGET_TYPE_NOTES && !context.variables.pageSize) { + return existingWidget; + } + // we want to concat next page of discussions to the existing ones + if (incomingWidget?.type === WIDGET_TYPE_NOTES && context.variables.after) { + // concatPagination won't work because we were placing new widget here so we have to do this manually + return { + ...incomingWidget, + discussions: { + ...incomingWidget.discussions, + nodes: [ + ...existingWidget.discussions.nodes, + ...incomingWidget.discussions.nodes, + ], + }, + }; + } return incomingWidget || existingWidget; }); }, |