i want this function to run in another function before the code for the second function execute.
here is the code for first function:
const [expression, setExpression] = useState("");
const [result, setResult] = useState("");
useEffect(() => {
if (localStorage.getItem("history_data")) {
const storedData = JSON.parse(localStorage.getItem("history_data"));
setHistoryData(storedData);
}
}, [])
const Logic = () => {
if (expression.toString().charAt(0) === "0" && expression.toString().charAt(1) === "1" || expression.toString().charAt(1) === "2" || expression.toString().charAt(1) === "3" || expression.toString().charAt(1) === "4" || expression.toString().charAt(1) === "5" || expression.toString().charAt(1) === "6" || expression.toString().charAt(1) === "7" || expression.toString().charAt(1) === "8" || expression.toString().charAt(1) === "9" || expression.toString().charAt(1) === "0") {
setExpression(expression.replace(expression.charAt(0), ''));
}
if (expression.charAt(expression.indexOf("+") + 1) === "0" && expression.charAt(expression.indexOf("+") + 2) === "1" || expression.charAt(expression.indexOf("+") + 2) === "2" || expression.charAt(expression.indexOf("+") + 2) === "3" || expression.charAt(expression.indexOf("+") + 2) === "4" || expression.charAt(expression.indexOf("+") + 2) === "5" || expression.charAt(expression.indexOf("+") + 2) === "6" || expression.charAt(expression.indexOf("+") + 2) === "7" || expression.charAt(expression.indexOf("+") + 2) === "8" || expression.charAt(expression.indexOf("+") + 2) === "9" || expression.charAt(expression.indexOf("+") + 2) === "0") {
setExpression(expression.replace(expression.charAt(expression.indexOf("+") + 1), ""));
}
if (expression.charAt(expression.indexOf("-") + 1) === "0" && expression.charAt(expression.indexOf("-") + 2) === "1" || expression.charAt(expression.indexOf("-") + 2) === "2" || expression.charAt(expression.indexOf("-") + 2) === "3" || expression.charAt(expression.indexOf("-") + 2) === "4" || expression.charAt(expression.indexOf("-") + 2) === "5" || expression.charAt(expression.indexOf("-") + 2) === "6" || expression.charAt(expression.indexOf("-") + 2) === "7" || expression.charAt(expression.indexOf("-") + 2) === "8" || expression.charAt(expression.indexOf("-") + 2) === "9" || expression.charAt(expression.indexOf("-") + 2) === "0") {
setExpression(expression.replace(expression.charAt(expression.indexOf("-") + 1), ""));
}
if (expression.charAt(expression.indexOf("*") + 1) === "0" && expression.charAt(expression.indexOf("*") + 2) === "1" || expression.charAt(expression.indexOf("*") + 2) === "2" || expression.charAt(expression.indexOf("*") + 2) === "3" || expression.charAt(expression.indexOf("*") + 2) === "4" || expression.charAt(expression.indexOf("*") + 2) === "5" || expression.charAt(expression.indexOf("*") + 2) === "6" || expression.charAt(expression.indexOf("*") + 2) === "7" || expression.charAt(expression.indexOf("*") + 2) === "8" || expression.charAt(expression.indexOf("*") + 2) === "9" || expression.charAt(expression.indexOf("*") + 2) === "0") {
setExpression(expression.replace(expression.charAt(expression.indexOf("*") + 1), ""));
}
if (expression.charAt(expression.indexOf("/") + 1) === "0" && expression.charAt(expression.indexOf("/") + 2) === "1" || expression.charAt(expression.indexOf("/") + 2) === "2" || expression.charAt(expression.indexOf("/") + 2) === "3" || expression.charAt(expression.indexOf("/") + 2) === "4" || expression.charAt(expression.indexOf("/") + 2) === "5" || expression.charAt(expression.indexOf("/") + 2) === "6" || expression.charAt(expression.indexOf("/") + 2) === "7" || expression.charAt(expression.indexOf("/") + 2) === "8" || expression.charAt(expression.indexOf("/") + 2) === "9" || expression.charAt(expression.indexOf("/") + 2) === "0") {
setExpression(expression.replace(expression.charAt(expression.indexOf("/") + 1), ""));
}
}
I want this function to execute in second function before the code for the second function execute.
here is the code for second function:
const Calculate = () => {
Logic();
setResult(expression);
setExpression(eval(expression).toString())
const Data = expression + " = " + eval(expression);
const now = new Date();
const month = now.toDateString().split(' ')[1];
const date = now.getDate();
const year = now.getFullYear();
const hour = now.getHours();
const min = now.getMinutes();
const dateTime = date + " " + month + " " + year + " " + hour + ":" + min;
if (expression) {
const newDataArray = { id: new Date().getTime().toString(), data: Data, time: dateTime };
setHistoryData([...historyData, newDataArray]);
localStorage.setItem("history_data", JSON.stringify([...historyData, newDataArray]));
}
}