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}}}}) {
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});
}
});

View File

@ -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});
}
},