diff --git a/src/app-components/CalculatorApp.tsx b/src/app-components/CalculatorApp.tsx index ea75e40..deeb8db 100644 --- a/src/app-components/CalculatorApp.tsx +++ b/src/app-components/CalculatorApp.tsx @@ -1,11 +1,49 @@ import { FC, useState } from 'react' +const AVAILABLE_OPERATORS = ['/', '*', '+', '-'] + const CalculatorApp: FC = () => { - const [foo, setFoo] = useState('foo') + const [equationArray, setEquationArray] = useState([]) + + const handleButtonClick = (value: string) => { + if (isOperator(value) && (!equationsInArray() || isOperator(lastEnteredEquation()))) return + + if (isNumber(value) && equationsInArray() && isNumber(lastEnteredEquation())) { + const newNumber = lastEnteredEquation() + value + const newEquationArr = replaceLastEquation(newNumber) + setEquationArray(newEquationArr) + return + } + + setEquationArray([...equationArray, value]) + } + + const isOperator = (value: string): boolean => AVAILABLE_OPERATORS.includes(value) + const isNumber = (value: string): boolean => !isOperator(value) + const equationsInArray = (): boolean => equationArray.length > 0 + const lastEnteredEquation = (): string => equationArray[equationArray.length - 1] + + const replaceLastEquation = (replaceValue: string): string[] => { + const eqArr = [...equationArray] + eqArr.splice(equationArray.length -1, 1, replaceValue) + return eqArr + } + + console.log(equationArray) + return (
-

Calculator App: { foo }

- + { + [...Array(10)].map((_, i) => ( + + )) + } + { + AVAILABLE_OPERATORS.map(operator => ( + + )) + } +
) }