memos/web/src/pages/Home.tsx

59 lines
1.7 KiB
TypeScript
Raw Normal View History

2022-05-21 12:21:06 +08:00
import { useEffect } from "react";
2022-07-08 22:17:17 +08:00
import { locationService, userService } from "../services";
2021-12-08 23:43:52 +08:00
import useLoading from "../hooks/useLoading";
import Only from "../components/common/OnlyWhen";
import Sidebar from "../components/Sidebar";
2022-05-28 07:38:06 +08:00
import MemosHeader from "../components/MemosHeader";
import MemoEditor from "../components/MemoEditor";
import MemoFilter from "../components/MemoFilter";
import MemoList from "../components/MemoList";
import toastHelper from "../components/Toast";
2021-12-08 23:43:52 +08:00
import "../less/home.less";
function Home() {
const loadingState = useLoading();
useEffect(() => {
userService
.doSignIn()
2022-07-08 22:17:17 +08:00
.catch()
.finally(async () => {
if (!userService.getState().user) {
if (userService.isVisitorMode()) {
const currentUserId = userService.getUserIdFromPath() as number;
2022-07-09 08:32:46 +08:00
const user = await userService.getUserById(currentUserId);
if (!user) {
toastHelper.error("User not found");
}
} else {
locationService.replaceHistory("/signin");
return;
}
2022-07-08 22:17:17 +08:00
}
loadingState.setFinish();
});
2021-12-08 23:43:52 +08:00
}, []);
return (
<section className="page-wrapper home">
2021-12-08 23:43:52 +08:00
{loadingState.isLoading ? null : (
<div className="page-container">
2021-12-08 23:43:52 +08:00
<Sidebar />
2022-05-28 07:38:06 +08:00
<main className="memos-wrapper">
2022-07-05 22:48:21 +08:00
<div className="memos-editor-wrapper">
<MemosHeader />
<Only when={!userService.isVisitorMode()}>
<MemoEditor />
</Only>
2022-07-05 22:48:21 +08:00
<MemoFilter />
</div>
2022-05-28 07:38:06 +08:00
<MemoList />
</main>
</div>
2021-12-08 23:43:52 +08:00
)}
</section>
2021-12-08 23:43:52 +08:00
);
}
export default Home;