Skip to content

Commit 0789a6c

Browse files
committed
refactor: Ditch the use of react router ♻️
1 parent d0f2a55 commit 0789a6c

8 files changed

+20
-100
lines changed

package-lock.json

+1-62
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@
1717
"@mui/icons-material": "5.11.16",
1818
"fontsource-rubik": "4.0.0",
1919
"react": "18.2.0",
20-
"react-dom": "18.2.0",
21-
"react-router-dom": "6.14.0"
20+
"react-dom": "18.2.0"
2221
},
2322
"devDependencies": {
2423
"vite": "4.3.9",

src/App.jsx

+8-15
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,22 @@
1-
import React, { useEffect, useState } from "react";
2-
import { useNavigate } from "react-router-dom";
3-
import { Route, Routes, Navigate } from "react-router";
1+
import React, { useEffect, useState, createContext } from "react";
42
import Result from "./components/Result";
53
import Letters from "./components/Letters";
64
import NoMinimization from "./components/NoMinimization"
75
import Start from "./components/Start";
86

97
function App() {
10-
const navigate = useNavigate();
11-
const [isFirstLoad, setIsFirstLoad] = useState(true);
8+
const [wizardStep, setWizardStep] = useState(0);
129
useEffect(() => {
1310
document.body.classList.remove("loadingBody");
1411
document.getElementById("splash").remove();
1512
document.body.classList.add("root");
16-
navigate("/", { replace: true });
17-
setIsFirstLoad(false);
1813
}, []);
19-
return isFirstLoad ? null : (
20-
<Routes>
21-
<Route path="/" element={<Start />} />
22-
<Route exact path="/no-minimization" element={<NoMinimization />} />
23-
<Route exact path="/letters" element={<Letters />} />
24-
<Route exact path="/result" element={<Result />} />
25-
<Route path="*" element={<Navigate to="/" />} />
26-
</Routes>
14+
return (
15+
wizardStep === 0 ? <Start onNextPage={(alt) => setWizardStep(alt ? 1 : 2)} /> :
16+
wizardStep === 1 ? <NoMinimization onNextPage={() => setWizardStep(0)} /> :
17+
wizardStep === 2 ? <Letters onNextPage={() => setWizardStep(3)} /> :
18+
wizardStep === 3 ? <Result onNextPage={() => setWizardStep(0)} /> :
19+
null
2720
);
2821
}
2922

src/components/Letters.jsx

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
import React, { useState } from "react";
22
import Paper from "@mui/material/Paper";
3-
import { useNavigate } from "react-router-dom";
43
import Button from "@mui/material/Button";
54
import CalculateRounded from "@mui/icons-material/CalculateRounded";
65
import TextField from "@mui/material/TextField";
76
import Typography from "@mui/material/Typography";
87
import varStore from "../utils/varStore";
98
import { Fade } from "@mui/material";
109

11-
const Letter = () => {
12-
const navigate = useNavigate();
10+
const Letter = ({ onNextPage }) => {
1311
const [isShown, setIsShown] = useState(true);
1412
const [isLettersChanged, setIsLettersChanged] = useState(false);
1513
const [letters, setLetters] = useState("");
@@ -32,7 +30,7 @@ const Letter = () => {
3230
} else if (!errMsg) {
3331
varStore.initInputLetters = letters.split("");
3432
setIsShown(false);
35-
setTimeout(() => navigate("/result"), 500);
33+
setTimeout(() => onNextPage(), 500);
3634
}
3735
};
3836
document.body.classList.add("centering-root");

src/components/NoMinimization.jsx

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React, { useState } from "react";
2-
import { useNavigate } from "react-router-dom";
32
import Button from "@mui/material/Button";
43
import Card from "@mui/material/Card";
54
import noMinimizationImg from "../assets/img/no-minimization.gif";
@@ -9,14 +8,13 @@ import Typography from "@mui/material/Typography";
98
import varStore from "../utils/varStore";
109
import { Fade } from "@mui/material";
1110

12-
const NoMinimization = () => {
13-
const navigate = useNavigate();
11+
const NoMinimization = ({ onNextPage }) => {
1412
const [isShown, setIsShown] = useState(true);
1513
const handleNewFunction = () => {
1614
setIsShown(false);
1715
setTimeout(() => {
1816
varStore.reset();
19-
navigate("/");
17+
onNextPage();
2018
}, 500);
2119
};
2220
document.body.classList.add("centering-root");

src/components/Result.jsx

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { Fade } from "@mui/material";
22
import React, { useState, useEffect } from "react";
3-
import { useNavigate } from "react-router-dom";
43
import minimizeFunction from "../core/minimizeFunction";
54
import varStore from "../utils/varStore";
65
import SelectionTable from "./SelectionTable";
@@ -11,14 +10,13 @@ import TabularTable from "./TabularTable";
1110
import MinimizedFunction from "./MinimizedFunction";
1211
import FunctionNotation from "./FunctionNotation";
1312

14-
const Result = () => {
13+
const Result = ({ onNextPage }) => {
1514
const [steps, setSteps] = useState(null);
16-
const navigate = useNavigate();
1715
const handleNewFunction = () => {
1816
setSteps(null);
1917
setTimeout(() => {
2018
varStore.reset();
21-
navigate("/");
19+
onNextPage();
2220
}, 500);
2321
};
2422
document.body.classList.remove("centering-root");

src/components/Start.jsx

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React, { useState } from "react";
2-
import { useNavigate } from "react-router-dom";
32
import Paper from "@mui/material/Paper";
43
import Button from "@mui/material/Button";
54
import FormGroup from "@mui/material/FormGroup";
@@ -11,8 +10,7 @@ import Typography from "@mui/material/Typography";
1110
import varStore from "../utils/varStore";
1211
import { Fade } from "@mui/material";
1312

14-
const Start = () => {
15-
const navigate = useNavigate();
13+
const Start = ({ onNextPage }) => {
1614
const [isShown, setIsShown] = useState(true);
1715
const [isMintermsChanged, setIsMintermsChanged] = useState(false);
1816
const [minterms, setMinterms] = useState("");
@@ -58,11 +56,11 @@ const Start = () => {
5856
varStore.initInputsNumber = Math.max(inputsCount, minInputsCount);
5957
if (mintermsPlusDonotcares.length === 2 ** varStore.initInputsNumber) {
6058
setIsShown(false);
61-
setTimeout(() => navigate("/no-minimization"), 500);
59+
setTimeout(() => onNextPage(true), 500);
6260
} else {
6361
varStore.isComplementAvail = isComplementAvail;
6462
setIsShown(false);
65-
setTimeout(() => navigate("/letters"), 500);
63+
setTimeout(() => onNextPage(false), 500);
6664
}
6765
}
6866
};

src/index.jsx

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React from "react";
22
import { createRoot } from "react-dom/client";
3-
import { HashRouter } from "react-router-dom";
43
import { ThemeProvider, createTheme } from '@mui/material/styles';
54
import App from "./App";
65
import "fontsource-rubik";
@@ -38,8 +37,6 @@ const root = createRoot(container);
3837

3938
root.render(
4039
<ThemeProvider theme={theme}>
41-
<HashRouter>
42-
<App />
43-
</HashRouter>
40+
<App />
4441
</ThemeProvider>
4542
);

0 commit comments

Comments
 (0)