summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/graphql_shared/issuable_client.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/graphql_shared/issuable_client.js')
-rw-r--r--app/assets/javascripts/graphql_shared/issuable_client.js38
1 files changed, 10 insertions, 28 deletions
diff --git a/app/assets/javascripts/graphql_shared/issuable_client.js b/app/assets/javascripts/graphql_shared/issuable_client.js
index 3b737dfff33..15e7ef7d62c 100644
--- a/app/assets/javascripts/graphql_shared/issuable_client.js
+++ b/app/assets/javascripts/graphql_shared/issuable_client.js
@@ -1,16 +1,18 @@
import produce from 'immer';
import VueApollo from 'vue-apollo';
+import { defaultDataIdFromObject } from '@apollo/client/core';
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_MILESTONE } from '~/work_items/constants';
-export const temporaryConfig = {
+export const config = {
typeDefs,
cacheConfig: {
- possibleTypes: {
- LocalWorkItemWidget: ['LocalWorkItemMilestone'],
+ // included temporarily until Vuex is removed from boards app
+ dataIdFromObject: (object) => {
+ // eslint-disable-next-line no-underscore-dangle
+ return object.__typename === 'BoardList' ? object.iid : defaultDataIdFromObject(object);
},
typePolicies: {
Project: {
@@ -22,35 +24,15 @@ export const temporaryConfig = {
},
WorkItem: {
fields: {
- mockWidgets: {
- read(widgets) {
- return (
- widgets || [
- {
- __typename: 'LocalWorkItemMilestone',
- type: WIDGET_TYPE_MILESTONE,
- nodes: [
- {
- dueDate: null,
- expired: false,
- id: 'gid://gitlab/Milestone/30',
- title: 'v4.0',
- // eslint-disable-next-line @gitlab/require-i18n-strings
- __typename: 'Milestone',
- },
- ],
- },
- ]
- );
- },
- },
widgets: {
merge(existing = [], incoming) {
if (existing.length === 0) {
return incoming;
}
return existing.map((existingWidget) => {
- const incomingWidget = incoming.find((w) => w.type === existingWidget.type);
+ const incomingWidget = incoming.find(
+ (w) => w.type && w.type === existingWidget.type,
+ );
return incomingWidget || existingWidget;
});
},
@@ -78,7 +60,7 @@ export const resolvers = {
},
};
-export const defaultClient = createDefaultClient(resolvers, temporaryConfig);
+export const defaultClient = createDefaultClient(resolvers, config);
export const apolloProvider = new VueApollo({
defaultClient,