When I calculate single digits like 4+3 or even 9*9, it does it just fine, but when I attempt to do multiple digits, it only calculates the first digit for each number. For example, 54+28 gives me 14. I'm not sure where the bug is, so here's my code except the stuff I know isn't important:
function reducer(state, {type, payload}){
switch(type) {
case ACTIONS.ADD_DIGIT:
if(state.overwrite) {
return {
...state,
currentOperand: payload.digit,
overwrite: false,
}
}
return {
...state,
previousOperand: evaluate(state),
operation: payload.operation,
currentOperand: null
}
case ACTIONS.EVALUATE:
if(
state.operation == null ||
state.currentOperand == null ||
state.previousOperand == null
) {
return state
}
return {
...state,
overwrite: true,
previousOperand: null,
operation:null,
currentOperand: evaluate(state),
}
}
}
function evaluate({currentOperand, previousOperand, operation}){
const prev = parseFloat(previousOperand)
const current = parseFloat(currentOperand)
if (isNaN(prev) || isNaN(current)) return ""
let computation = ""
switch(operation) {
case "+":
computation = prev + current
break
case "-":
computation = prev - current
break
case "*":
computation = prev * current
break
case "÷":
computation = prev / current
break
}
return computation.toString()
}