Make some more code not change immutable objects
This commit is contained in:
parent
67f7ed0c20
commit
e0c95ad9ce
|
|
@ -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});
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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});
|
||||
}
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue