fix: remove lazy import components

pull/3304/head
Steven 1 year ago
parent 6295979592
commit 33f52320f7

@ -24,7 +24,7 @@ const CommonContext = createContext<Context>({
const CommonContextProvider = ({ children }: { children: React.ReactNode }) => { const CommonContextProvider = ({ children }: { children: React.ReactNode }) => {
const workspaceSettingStore = useWorkspaceSettingStore(); const workspaceSettingStore = useWorkspaceSettingStore();
const userStore = useUserStore(); const userStore = useUserStore();
const [loading, setLoading] = useState(true); const [initialized, setInitialized] = useState(false);
const [commonContext, setCommonContext] = useState<Pick<Context, "locale" | "appearance" | "profile">>({ const [commonContext, setCommonContext] = useState<Pick<Context, "locale" | "appearance" | "profile">>({
locale: "en", locale: "en",
appearance: "system", appearance: "system",
@ -56,7 +56,7 @@ const CommonContextProvider = ({ children }: { children: React.ReactNode }) => {
} }
}; };
Promise.all([initialWorkspace(), initialUser()]).then(() => setLoading(false)); Promise.all([initialWorkspace(), initialUser()]).then(() => setInitialized(true));
}, []); }, []);
return ( return (
@ -67,7 +67,7 @@ const CommonContextProvider = ({ children }: { children: React.ReactNode }) => {
setAppearance: (appearance: string) => setCommonContext({ ...commonContext, appearance }), setAppearance: (appearance: string) => setCommonContext({ ...commonContext, appearance }),
}} }}
> >
{loading ? null : <>{children}</>} {!initialized ? null : <>{children}</>}
</CommonContext.Provider> </CommonContext.Provider>
); );
}; };

@ -1,6 +1,6 @@
import { Button, IconButton, Tooltip } from "@mui/joy"; import { Button, IconButton, Tooltip } from "@mui/joy";
import clsx from "clsx"; import clsx from "clsx";
import { Suspense, useEffect } from "react"; import { Suspense, useEffect, useState } from "react";
import { Outlet, useLocation } from "react-router-dom"; import { Outlet, useLocation } from "react-router-dom";
import useLocalStorage from "react-use/lib/useLocalStorage"; import useLocalStorage from "react-use/lib/useLocalStorage";
import Icon from "@/components/Icon"; import Icon from "@/components/Icon";
@ -17,6 +17,7 @@ const HomeLayout = () => {
const { sm } = useResponsiveWidth(); const { sm } = useResponsiveWidth();
const currentUser = useCurrentUser(); const currentUser = useCurrentUser();
const [collapsed, setCollapsed] = useLocalStorage<boolean>("navigation-collapsed", false); const [collapsed, setCollapsed] = useLocalStorage<boolean>("navigation-collapsed", false);
const [initialized, setInitialized] = useState(false);
// Redirect to explore page if not logged in. // Redirect to explore page if not logged in.
useEffect(() => { useEffect(() => {
@ -27,10 +28,14 @@ const HomeLayout = () => {
) )
) { ) {
navigateTo(Routes.EXPLORE); navigateTo(Routes.EXPLORE);
return;
} }
setInitialized(true);
}, []); }, []);
return ( return !initialized ? (
<Loading />
) : (
<div className="w-full min-h-full"> <div className="w-full min-h-full">
<div className={clsx("w-full transition-all mx-auto flex flex-row justify-center items-start", collapsed ? "sm:pl-16" : "sm:pl-56")}> <div className={clsx("w-full transition-all mx-auto flex flex-row justify-center items-start", collapsed ? "sm:pl-16" : "sm:pl-56")}>
{sm && ( {sm && (

@ -2,12 +2,12 @@ import { Suspense } from "react";
import { Outlet } from "react-router-dom"; import { Outlet } from "react-router-dom";
import Loading from "@/pages/Loading"; import Loading from "@/pages/Loading";
function SuspenseWrapper() { const SuspenseWrapper = () => {
return ( return (
<Suspense fallback={<Loading />}> <Suspense fallback={<Loading />}>
<Outlet /> <Outlet />
</Suspense> </Suspense>
); );
} };
export default SuspenseWrapper; export default SuspenseWrapper;

@ -23,7 +23,6 @@ interface State {
const BASIC_SECTIONS: SettingSection[] = ["my-account", "preference"]; const BASIC_SECTIONS: SettingSection[] = ["my-account", "preference"];
const ADMIN_SECTIONS: SettingSection[] = ["member", "system", "storage", "sso"]; const ADMIN_SECTIONS: SettingSection[] = ["member", "system", "storage", "sso"];
const SECTION_ICON_MAP: Record<SettingSection, LucideIcon> = { const SECTION_ICON_MAP: Record<SettingSection, LucideIcon> = {
"my-account": Icon.User, "my-account": Icon.User,
preference: Icon.Cog, preference: Icon.Cog,

@ -1,24 +1,22 @@
import { lazy } from "react";
import { createBrowserRouter } from "react-router-dom"; import { createBrowserRouter } from "react-router-dom";
import App from "@/App"; import App from "@/App";
import HomeLayout from "@/layouts/HomeLayout"; import HomeLayout from "@/layouts/HomeLayout";
import SuspenseWrapper from "@/layouts/SuspenseWrapper"; import SuspenseWrapper from "@/layouts/SuspenseWrapper";
import About from "@/pages/About";
const SignIn = lazy(() => import("@/pages/SignIn")); import Archived from "@/pages/Archived";
const SignUp = lazy(() => import("@/pages/SignUp")); import AuthCallback from "@/pages/AuthCallback";
const AuthCallback = lazy(() => import("@/pages/AuthCallback")); import Explore from "@/pages/Explore";
const Explore = lazy(() => import("@/pages/Explore")); import Home from "@/pages/Home";
const Home = lazy(() => import("@/pages/Home")); import Inboxes from "@/pages/Inboxes";
const UserProfile = lazy(() => import("@/pages/UserProfile")); import MemoDetail from "@/pages/MemoDetail";
const MemoDetail = lazy(() => import("@/pages/MemoDetail")); import NotFound from "@/pages/NotFound";
const Archived = lazy(() => import("@/pages/Archived")); import PermissionDenied from "@/pages/PermissionDenied";
const Timeline = lazy(() => import("@/pages/Timeline")); import Resources from "@/pages/Resources";
const Resources = lazy(() => import("@/pages/Resources")); import Setting from "@/pages/Setting";
const Inboxes = lazy(() => import("@/pages/Inboxes")); import SignIn from "@/pages/SignIn";
const Setting = lazy(() => import("@/pages/Setting")); import SignUp from "@/pages/SignUp";
const About = lazy(() => import("@/pages/About")); import Timeline from "@/pages/Timeline";
const NotFound = lazy(() => import("@/pages/NotFound")); import UserProfile from "@/pages/UserProfile";
const PermissionDenied = lazy(() => import("@/pages/PermissionDenied"));
export enum Routes { export enum Routes {
HOME = "/", HOME = "/",

Loading…
Cancel
Save