diff options
Diffstat (limited to 'app/assets/javascripts/issues/list/graphql.js')
-rw-r--r-- | app/assets/javascripts/issues/list/graphql.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/app/assets/javascripts/issues/list/graphql.js b/app/assets/javascripts/issues/list/graphql.js new file mode 100644 index 00000000000..5ef61727a3d --- /dev/null +++ b/app/assets/javascripts/issues/list/graphql.js @@ -0,0 +1,25 @@ +import produce from 'immer'; +import createDefaultClient from '~/lib/graphql'; +import getIssuesQuery from 'ee_else_ce/issues/list/queries/get_issues.query.graphql'; + +const resolvers = { + Mutation: { + reorderIssues: (_, { oldIndex, newIndex, namespace, serializedVariables }, { cache }) => { + const variables = JSON.parse(serializedVariables); + const sourceData = cache.readQuery({ query: getIssuesQuery, variables }); + + const data = produce(sourceData, (draftData) => { + const issues = draftData[namespace].issues.nodes.slice(); + const issueToMove = issues[oldIndex]; + issues.splice(oldIndex, 1); + issues.splice(newIndex, 0, issueToMove); + + draftData[namespace].issues.nodes = issues; + }); + + cache.writeQuery({ query: getIssuesQuery, variables, data }); + }, + }, +}; + +export const gqlClient = createDefaultClient(resolvers); |