refactor: loading for suspend

This commit is contained in:
zerosoul
2022-06-08 11:28:22 +08:00
parent f28fb11a0d
commit 19b48b20fe
3 changed files with 71 additions and 14 deletions
+8 -4
View File
@@ -13,13 +13,17 @@ opacity: 1;
} }
`; `;
const StyledWrapper = styled.div` const StyledWrapper = styled.div`
width: 100vw; width: 100%;
height: 100vh; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 15px; gap: 15px;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
&.fullscreen {
width: 100vw;
height: 100vh;
}
.loading { .loading {
display: flex; display: flex;
align-items: center; align-items: center;
@@ -33,14 +37,14 @@ const StyledWrapper = styled.div`
} }
} }
`; `;
export default function Loading({ reload = false }) { export default function Loading({ reload = false, fullscreen = false }) {
const { clearLocalData } = useLogout(); const { clearLocalData } = useLogout();
const handleReload = () => { const handleReload = () => {
clearLocalData(); clearLocalData();
location.reload(true); location.reload(true);
}; };
return ( return (
<StyledWrapper> <StyledWrapper className={fullscreen ? "fullscreen" : ""}>
<Ring <Ring
className="loading" className="loading"
size={40} size={40}
+1 -1
View File
@@ -38,7 +38,7 @@ export default function HomePage() {
const { loading } = usePreload(); const { loading } = usePreload();
// console.log("index loading", loading, ready); // console.log("index loading", loading, ready);
if (loading || !ready) { if (loading || !ready) {
return <Loading reload={true} />; return <Loading reload={true} fullscreen={true} />;
} }
const isSettingPage = pathname.startsWith("/setting"); const isSettingPage = pathname.startsWith("/setting");
if (isSettingPage) { if (isSettingPage) {
+62 -9
View File
@@ -45,7 +45,7 @@ const PageRoutes = () => {
return ( return (
<HashRouter> <HashRouter>
<Suspense fallback={<Loading />}> <Suspense fallback={<Loading fullscreen={true} />}>
<Routes> <Routes>
<Route path="/oauth/:token" element={<OAuthPage />} /> <Route path="/oauth/:token" element={<OAuthPage />} />
<Route <Route
@@ -97,23 +97,76 @@ const PageRoutes = () => {
} }
> >
<Route path="setting"> <Route path="setting">
<Route index element={<SettingPage />} /> <Route
index
element={
<Suspense fallback={<Loading />}>
<SettingPage />
</Suspense>
}
/>
<Route path="channel/:cid" element={<SettingChannelPage />} /> <Route path="channel/:cid" element={<SettingChannelPage />} />
</Route> </Route>
<Route index element={<ChatPage />} /> <Route
index
element={
<Suspense fallback={<Loading />}>
<ChatPage />
</Suspense>
}
/>
<Route path="chat"> <Route path="chat">
<Route index element={<ChatPage />} /> <Route index element={<ChatPage />} />
<Route path="channel/:channel_id" element={<ChatPage />} /> <Route
<Route path="dm/:user_id" element={<ChatPage />} /> path="channel/:channel_id"
element={
<Suspense fallback={<Loading />}>
<ChatPage />
</Suspense>
}
/>
<Route
path="dm/:user_id"
element={
<Suspense fallback={<Loading />}>
<ChatPage />
</Suspense>
}
/>
</Route> </Route>
<Route path="contacts"> <Route path="contacts">
<Route index element={<ContactsPage />} /> <Route
<Route path=":user_id" element={<ContactsPage />} /> index
element={
<Suspense fallback={<Loading />}>
<ContactsPage />
</Suspense>
}
/>
<Route
path=":user_id"
element={
<Suspense fallback={<Loading />}>
<ContactsPage />
</Suspense>
}
/>
</Route> </Route>
<Route path="favs" element={<FavoritesPage />}></Route> <Route
path="favs"
element={
<Suspense fallback={<Loading />}>
<FavoritesPage />
</Suspense>
}
></Route>
<Route <Route
path="files" path="files"
element={<ResourceManagement fileMessages={fileMessages} />} element={
<Suspense fallback={<Loading />}>
<ResourceManagement fileMessages={fileMessages} />
</Suspense>
}
></Route> ></Route>
</Route> </Route>
<Route path="*" element={<NotFoundPage />} /> <Route path="*" element={<NotFoundPage />} />