mirror of
https://github.com/sergeyyarkov/educt-client.git
synced 2026-10-11 10:19:22 +03:00
74 lines
2.3 KiB
TypeScript
74 lines
2.3 KiB
TypeScript
import React, { useState, ReactNode } from 'react';
|
|
import { CoursesPageContext, ProfilePageContext, StoreContext, UsersPageContext } from 'contexts';
|
|
import { ProfilePageDataType, ProfilePageStatusType, SearchingRoleStateType } from 'types';
|
|
import RootStore from 'stores/RootStore';
|
|
import { ICategory, IUser } from 'interfaces';
|
|
import { CourseStatusEnum } from 'enums';
|
|
|
|
/**
|
|
* Root store context provider
|
|
*/
|
|
export const RootStoreProvider = ({ children }: { children: ReactNode }) => {
|
|
const store = new RootStore();
|
|
|
|
return <StoreContext.Provider value={store}>{children}</StoreContext.Provider>;
|
|
};
|
|
|
|
/**
|
|
* Profile page context provider
|
|
*/
|
|
export const ProfilePageContextProvider: React.FC = ({ children }) => {
|
|
const [statusPageView, setStatusPageView] = useState<ProfilePageStatusType>('default');
|
|
const [pageData, setPageData] = useState<ProfilePageDataType>({});
|
|
|
|
return (
|
|
<ProfilePageContext.Provider value={{ statusPageView, setStatusPageView, pageData, setPageData }}>
|
|
{children}
|
|
</ProfilePageContext.Provider>
|
|
);
|
|
};
|
|
|
|
/**
|
|
* Users page context provider
|
|
*/
|
|
export const UsersPageContextProvider: React.FC = ({ children }) => {
|
|
const [searchingRole, setSearchingRole] = useState<SearchingRoleStateType>(undefined);
|
|
const [loading, setLoading] = useState<boolean>(false);
|
|
const [search, setSearch] = useState<string | undefined>(undefined);
|
|
const [editingUser, setEditingUser] = useState<IUser | undefined>(undefined);
|
|
const [deletingUser, setDeletingUser] = useState<IUser | undefined>(undefined);
|
|
|
|
return (
|
|
<UsersPageContext.Provider
|
|
value={{
|
|
searchingRole,
|
|
setSearchingRole,
|
|
loading,
|
|
setLoading,
|
|
search,
|
|
setSearch,
|
|
editingUser,
|
|
setEditingUser,
|
|
deletingUser,
|
|
setDeletingUser,
|
|
}}
|
|
>
|
|
{children}
|
|
</UsersPageContext.Provider>
|
|
);
|
|
};
|
|
|
|
/**
|
|
* Courses page context provider
|
|
*/
|
|
export const CoursesPageContextProvider: React.FC = ({ children }) => {
|
|
const [selectedCategory, setSelectedCategory] = useState<ICategory | undefined>(undefined);
|
|
const [courseStatus, setCourseStatus] = useState<CourseStatusEnum | undefined>(undefined);
|
|
|
|
return (
|
|
<CoursesPageContext.Provider value={{ selectedCategory, setSelectedCategory, courseStatus, setCourseStatus }}>
|
|
{children}
|
|
</CoursesPageContext.Provider>
|
|
);
|
|
};
|