diff --git a/client/src/components/content-blocks/assignment/Assignment.vue b/client/src/components/content-blocks/assignment/Assignment.vue index dbeebb96..39b2ab47 100644 --- a/client/src/components/content-blocks/assignment/Assignment.vue +++ b/client/src/components/content-blocks/assignment/Assignment.vue @@ -91,16 +91,32 @@ methods: { _save: debounce(function () { + const assignment = this.assignment; this.$apollo.mutate({ mutation: UPDATE_ASSIGNMENT_MUTATION_WITH_SUCCESS, variables: { input: { assignment: { - id: this.assignment.id, - answer: this.assignment.submission.text, - document: this.assignment.submission.document, + id: assignment.id, + answer: assignment.submission.text, + document: assignment.submission.document, } } + }, + update(store, {data: {updateAssignment: {successful}}}) { + try { + if (successful) { + const query = ASSIGNMENT_QUERY; + const variables = { + id: assignment.id + }; + const data = store.readQuery({query, variables}); + data.assignment = Object.assign({}, assignment); + store.writeQuery({query, variables, data}); + } + } catch (e) { + // Query did not exist in the cache, and apollo throws a generic Error. Do nothing + } } }).then(() => { this.unsaved = false;