From 7bdaf74e1a8410fde438f8f76cc1a17d9dd41fcc Mon Sep 17 00:00:00 2001 From: okbel Date: Thu, 4 Jan 2018 12:08:26 -0300 Subject: [PATCH] SetUserRole using DataProxy --- client/coral-admin/src/graphql/index.js | 37 ++++++++++++------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/client/coral-admin/src/graphql/index.js b/client/coral-admin/src/graphql/index.js index 1edf1925b..ed4e772cf 100644 --- a/client/coral-admin/src/graphql/index.js +++ b/client/coral-admin/src/graphql/index.js @@ -16,29 +16,26 @@ const userStatusFragment = gql` } }`; +const userRoleFragment = gql` + fragment Talk_UpdateUserRole on User { + role + }`; + export default { mutations: { - SetUserRole: ({variables: {id: userId, role}}) => ({ - updateQueries: { - TalkAdmin_Community: (prev) => { + SetUserRole: ({variables: {id, role}}) => ({ + update: (proxy) => { + const fragmentId = `User_${id}`; + const data = proxy.readFragment({fragment: userRoleFragment, id: fragmentId}); - const updated = update(prev, { - users: { - nodes: { - $apply: (nodes) => nodes.map((node) => { - if (node.id === userId) { - node.role = role; - } - - return node; - }) - }, - }, - }); - - return updated; - } - } + const updated = update(data, { + role: { + $set: role + } + }); + + proxy.writeFragment({fragment: userRoleFragment, id: fragmentId, data: updated}); + }, }), SuspendUser: ({variables: {input: {id, until}}}) => ({ update: (proxy) => {