memos/web/src/layouts/CommonContextProvider.tsx
2024-02-24 10:18:53 +08:00

32 lines
973 B
TypeScript

import { useEffect, useState } from "react";
import { initialGlobalState } from "@/store/module";
import { useUserStore, useWorkspaceSettingStore } from "@/store/v1";
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting";
interface Props {
children: React.ReactNode;
}
const CommonContextProvider = (props: Props) => {
const workspaceSettingStore = useWorkspaceSettingStore();
const userStore = useUserStore();
const [loading, setLoading] = useState(true);
useEffect(() => {
const initialState = async () => {
await initialGlobalState();
await workspaceSettingStore.fetchWorkspaceSetting(WorkspaceSettingKey.WORKSPACE_SETTING_GENERAL);
try {
await userStore.fetchCurrentUser();
} catch (error) {
// Do nothing.
}
};
Promise.all([initialState()]).then(() => setLoading(false));
}, []);
return loading ? null : <>{props.children}</>;
};
export default CommonContextProvider;