diff --git a/client/src/components/school-class/EditClassNameWizard.vue b/client/src/components/school-class/EditClassNameWizard.vue index 37b5a0d8..ad6a0d0c 100644 --- a/client/src/components/school-class/EditClassNameWizard.vue +++ b/client/src/components/school-class/EditClassNameWizard.vue @@ -40,8 +40,16 @@ }, update(store, {data: {updateSchoolClass: {schoolClass: {name}}}}) { const query = MY_SCHOOL_CLASS_QUERY; - const data = store.readQuery({query}); - data.me.selectedClass.name = name; + const {me} = store.readQuery({query}); + const data = { + me: { + ...me, + selectedClass: { + ...me.selectedClass, + name + } + } + }; store.writeQuery({query, data}); } }); diff --git a/client/src/pages/myClass.vue b/client/src/pages/myClass.vue index fd3e71bd..9834c657 100644 --- a/client/src/pages/myClass.vue +++ b/client/src/pages/myClass.vue @@ -56,17 +56,26 @@ update(store, {data: {addRemoveMember: {success}}}) { if (success) { const query = MY_SCHOOL_CLASS_QUERY; - const data = store.readQuery({query}); - let memberIndex = data.me.selectedClass.members.findIndex(m => m.id === member.id); - data.me.selectedClass.members = [ - ...data.me.selectedClass.members.slice(0, memberIndex), + const {me} = store.readQuery({query}); + let memberIndex = me.selectedClass.members.findIndex(m => m.id === member.id); + const members = [ + ...me.selectedClass.members.slice(0, memberIndex), {...member, active}, - ...data.me.selectedClass.members.slice(memberIndex + 1), + ...me.selectedClass.members.slice(memberIndex + 1), ]; - if (member.isMe) { - // if we changed the currently selected class of the logged in user, we need to change this property too - data.me.selectedClass.readOnly = !active; - } + + // if we changed the currently selected class of the logged in user, we need to change this property too + const readOnly = member.isMe ? !active : me.selectedClass.readOnly; + const data = { + me: { + ...me, + selectedClass: { + ...me.selectedClass, + readOnly, + members + } + } + }; store.writeQuery({query, data}); } },