Vlad Sokolovskiy
Надо в одном состоянии иметь доступ ко второму и при изменении флага из массива ролей дёргать нужный объект с описанием роли. Например, flag isModerator в true, значит ищем в состоянии, с массивом доступных ролей, объект с id =2 (модератор)и устанавливаем его в состояние "текущая" роль. Если flag isModerator в false, то ищем в массиве ролей, объект с id=1(оператор) и записываем его в состояние с текущей ролью. Надеюсь стало понятнее
sample({
source: roles,
clock: isModerator,
target: currentRole,
fn(roles, isModerator) {
const id = isModerator ? 2 : 1
return roles.find(role => role.id === id)
}
})
при изменении стора isModerator, прочитать значение стора roles, найти в нём нужную роль, результат записать в стор currentRole