JSFiddle - React, Tailwind, and code Playground
by Alexey
JavaScript
const user = {
name: 'Kim',
active: true,
cart: [],
purchases: []
}
const history1 = [];
/* function compose(f, g) {
console.log(g)
return function(...args) {
return f(g(...args))
}
} */
const purchaseItem = (...fns) => {
return fns.reduce((f, g) => {
return function(...args) {
console.log(args)
return f(g(...args))
}
})
};
purchaseItem(emptyUserCart, buyItem, applyTaxToItems, addItemToCart)(user, {
name: 'laptop',
price: 50
});
function addItemToCart(user, item) {
history1.push(user)
const updatedCart = user.cart.concat(item)
return Object.assign({}, user, {
cart: updatedCart
});
}
function applyTaxToItems(user) {
history1.push(user)
const {
cart
} = user;
const taxRate = 1.3;
const updatedCart = cart.map(item => {
return {
name: item.name,
price: item.price * taxRate
}
})
return Object.assign({}, user, {
cart: updatedCart
});
}
function buyItem(user) {
history1.push(user)
const itemsInCart = user.cart;
return Object.assign({}, user, {
purchases: itemsInCart
});
}
function emptyUserCart(user) {
history1.push(user)
return Object.assign({}, user, {
cart: []
});
}
function refundItem() {
}
function getUserState() {
}
function goBack() {
}
function goForward() {
}