theme is saving properly to local storage

This commit is contained in:
Carter 2025-04-16 12:29:02 -06:00
parent 9df40db30f
commit 67f8645a25
2 changed files with 49 additions and 48 deletions

View file

@ -8,7 +8,6 @@ import { ErrorBoundary } from "react-error-boundary";
import { getWhitelabel } from "services/whiteLabel";
import Ventilation from "pages/VentEditor";
import { useGlobalState } from "providers";
import { Box } from "@mui/material";
const DeviceHistory = lazy(() => import("pages/DeviceHistory"));
const DevicePage = lazy(() => import("pages/Device"));
@ -289,54 +288,52 @@ export default function Router() {
return (
<BrowserRouter>
<Header />
{/* <Box sx={{ height: "100%", minHeight: "200px" }}> */}
<Suspense fallback={<LoadingScreen message="Loading Page"/>}>
<Routes>
{/* Redirects */}
<Route path="/callback" element={<Navigate to="/" />} />
{/* <Route path="/team/:teamID" element={<Navigate to="/teams/:teamID" />} /> */}
{/* <Route path="/device/:deviceID" element={<Navigate to="/devices/:devicesID" />} /> */}
<Route path="" element={<Navigate to={whiteLabel.homePage ? whiteLabel.homePage : "/devices"} />} />
{/* Page routes */}
{/* <Route index element={<Typography>Hello!</Typography>} /> */}
<Route path="users" element={<Users/>} />
<Route path="tasks" element={<Tasks />} />
<Route path="transactions" element={<Transactions />} />
{user.hasFeature("installer") &&
<Route path="cableEstimate" element={<BinCableEstimator />} />
}
{user.hasFeature("developer") &&
<Route path="api" element={<APIDocs />} />
}
{user.hasFeature("admin") &&
<Route path="logs" element={<Logs />} />
}
<Route path="fields" element={<Fields />} />
<Route path="marketplace" element={<Marketplace />} />
{user.hasFeature("admin") && (
<Route path="firmware" element={<Firmware />} />
)}
<Route path="nfc" element={<Nfc />} />
{/* Map pages */}
<Route path="visualFarm" element={<FieldMap />} />
<Route path="aviationMap" element={<AviationMap />} />
<Route path="constructionMap" element={<ConstructionSiteMap />} />
<Route path="/logout" element={<Logout />} />
<Route path="grainbags/:bagID" element={<GrainBag />} />
{/*
<ErrorBoundary FallbackComponent={ErrorFallback}>
<Route path="*" element={<RelativeRoutes/>} />
</ErrorBoundary> */}
<Suspense fallback={<LoadingScreen message="Loading Page"/>}>
<Routes>
{/* Redirects */}
<Route path="/callback" element={<Navigate to="/" />} />
{/* <Route path="/team/:teamID" element={<Navigate to="/teams/:teamID" />} /> */}
{/* <Route path="/device/:deviceID" element={<Navigate to="/devices/:devicesID" />} /> */}
<Route path="" element={<Navigate to={whiteLabel.homePage ? whiteLabel.homePage : "/devices"} />} />
{/* Page routes */}
{/* <Route index element={<Typography>Hello!</Typography>} /> */}
<Route path="users" element={<Users/>} />
<Route path="tasks" element={<Tasks />} />
<Route path="transactions" element={<Transactions />} />
{user.hasFeature("installer") &&
<Route path="cableEstimate" element={<BinCableEstimator />} />
}
{user.hasFeature("developer") &&
<Route path="api" element={<APIDocs />} />
}
{user.hasFeature("admin") &&
<Route path="logs" element={<Logs />} />
}
<Route path="fields" element={<Fields />} />
<Route path="marketplace" element={<Marketplace />} />
{user.hasFeature("admin") && (
<Route path="firmware" element={<Firmware />} />
)}
<Route path="nfc" element={<Nfc />} />
{/* Map pages */}
<Route path="visualFarm" element={<FieldMap />} />
<Route path="aviationMap" element={<AviationMap />} />
<Route path="constructionMap" element={<ConstructionSiteMap />} />
<Route path="/logout" element={<Logout />} />
<Route path="grainbags/:bagID" element={<GrainBag />} />
{/*
<ErrorBoundary FallbackComponent={ErrorFallback}>
<Route path="*" element={<RelativeRoutes/>} />
</Routes>
</Suspense>
{/* </Box> */}
</ErrorBoundary> */}
<Route path="*" element={<RelativeRoutes/>} />
</Routes>
</Suspense>
</BrowserRouter>
)
}

View file

@ -24,7 +24,11 @@ export const useThemeMode = () => {
};
export const AppThemeProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
const [mode, setMode] = useState<ThemeMode>("system");
const savedTheme = localStorage.getItem("theme");
const isValidTheme = (theme: string | null): theme is ThemeMode =>
theme === "light" || theme === "dark" || theme === "system";
const [mode, setMode] = useState<ThemeMode>(isValidTheme(savedTheme) ? savedTheme : "system");
const prefersDark = useMediaQuery("(prefers-color-scheme: dark)");
const resolvedMode: PaletteMode = mode === "system" ? (prefersDark ? "dark" : "light") : mode;