From 3c4646bff6e8f527150d3d47cb76e11f032241cd Mon Sep 17 00:00:00 2001 From: Christian Cueni Date: Thu, 18 Nov 2021 13:29:42 +0100 Subject: [PATCH] Delete ModuleNode caches on class change --- .../graphql/gql/local/mutations/deleteModuleNodes.gql | 3 +++ client/src/graphql/resolvers.js | 6 ++++++ client/src/mixins/update-selected-class.js | 10 ++++++++++ 3 files changed, 19 insertions(+) create mode 100644 client/src/graphql/gql/local/mutations/deleteModuleNodes.gql diff --git a/client/src/graphql/gql/local/mutations/deleteModuleNodes.gql b/client/src/graphql/gql/local/mutations/deleteModuleNodes.gql new file mode 100644 index 00000000..bc0c1939 --- /dev/null +++ b/client/src/graphql/gql/local/mutations/deleteModuleNodes.gql @@ -0,0 +1,3 @@ +mutation { + deleteModuleNodes @client +} diff --git a/client/src/graphql/resolvers.js b/client/src/graphql/resolvers.js index 2d0c2620..8dafbd5a 100644 --- a/client/src/graphql/resolvers.js +++ b/client/src/graphql/resolvers.js @@ -34,5 +34,11 @@ export const resolvers = { cache.writeQuery({query: SIDEBAR, data}); return data.sidebar; }, + deleteModuleNodes: (_, _query, {cache}) => { + Object.keys(cache.data.data) + .filter(prop => prop.indexOf('ModuleNode:') === 0) + .map(moduleName => cache.data.delete(moduleName)); // v3 uses .evict{id, fieldname} + return {success: true} + }, }, }; diff --git a/client/src/mixins/update-selected-class.js b/client/src/mixins/update-selected-class.js index 62b2bf7d..fc4a6b98 100644 --- a/client/src/mixins/update-selected-class.js +++ b/client/src/mixins/update-selected-class.js @@ -1,10 +1,12 @@ import ME_QUERY from '@/graphql/gql/queries/meQuery.gql'; import UPDATE_USER_SETTING from '@/graphql/gql/mutations/updateUserSetting.gql'; import MY_SCHOOL_CLASS_QUERY from '@/graphql/gql/queries/mySchoolClass.gql'; +import DELETE_MODULE_NODES from '@/graphql/gql/local/mutations/deleteModuleNodes.gql'; export default { methods: { updateSelectedClass(selectedClass) { + const innerApollo = this.$apollo; return this.$apollo.mutate({ mutation: UPDATE_USER_SETTING, variables: { @@ -18,6 +20,14 @@ export default { meData.me.selectedClass = selectedClass; store.writeQuery({query: ME_QUERY, data: meData}); + + innerApollo.mutate({ + mutation: DELETE_MODULE_NODES, + variables: { + test: '', + } + }) + }, refetchQueries: [{ query: MY_SCHOOL_CLASS_QUERY