in src/state/reducers/bookmarks.ts [14:59]
export default function reduce(state = INITIAL_STATE, action) {
switch (action.type) {
case ADD_BOOKMARK: {
const { name, stateId, data } = action.payload;
const newBookmark = { name, stateId, data: data || {} };
return [...state, newBookmark];
}
case REMOVE_BOOKMARK: {
const stateId = action.payload;
return state.filter(element => element.stateId !== stateId);
}
case RENAME_BOOKMARK: {
const { stateId, name: newName } = action.payload;
return state.map((b) => {
const isTarget = b.stateId === stateId;
const name = isTarget ? newName : b.name;
return { ...b, name };
});
}
case CHANGE_BOOKMARK: {
const { stateId, name, data } = action.payload;
return state.map((b) => {
const isTarget = b.stateId === stateId;
return isTarget ? { name, stateId, data } : b;
});
}
case MOVE_BOOKMARK: {
const { from, to } = action.payload;
const bookmarks = [...state];
const moved = bookmarks[from];
if (from !== to) {
bookmarks.splice(from, 1);
bookmarks.splice(to, 0, moved);
}
return bookmarks;
}
default: {
return state;
}
}
}