Make some more code not change immutable objects

This commit is contained in:
Ramon Wenger 2022-01-26 21:36:57 +01:00
parent 67f7ed0c20
commit e0c95ad9ce
2 changed files with 28 additions and 11 deletions

View File

@ -40,8 +40,16 @@
}, },
update(store, {data: {updateSchoolClass: {schoolClass: {name}}}}) { update(store, {data: {updateSchoolClass: {schoolClass: {name}}}}) {
const query = MY_SCHOOL_CLASS_QUERY; const query = MY_SCHOOL_CLASS_QUERY;
const data = store.readQuery({query}); const {me} = store.readQuery({query});
data.me.selectedClass.name = name; const data = {
me: {
...me,
selectedClass: {
...me.selectedClass,
name
}
}
};
store.writeQuery({query, data}); store.writeQuery({query, data});
} }
}); });

View File

@ -56,17 +56,26 @@
update(store, {data: {addRemoveMember: {success}}}) { update(store, {data: {addRemoveMember: {success}}}) {
if (success) { if (success) {
const query = MY_SCHOOL_CLASS_QUERY; const query = MY_SCHOOL_CLASS_QUERY;
const data = store.readQuery({query}); const {me} = store.readQuery({query});
let memberIndex = data.me.selectedClass.members.findIndex(m => m.id === member.id); let memberIndex = me.selectedClass.members.findIndex(m => m.id === member.id);
data.me.selectedClass.members = [ const members = [
...data.me.selectedClass.members.slice(0, memberIndex), ...me.selectedClass.members.slice(0, memberIndex),
{...member, active}, {...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 // if we changed the currently selected class of the logged in user, we need to change this property too
data.me.selectedClass.readOnly = !active; const readOnly = member.isMe ? !active : me.selectedClass.readOnly;
} const data = {
me: {
...me,
selectedClass: {
...me.selectedClass,
readOnly,
members
}
}
};
store.writeQuery({query, data}); store.writeQuery({query, data});
} }
}, },