33 lines
949 B
TypeScript
33 lines
949 B
TypeScript
|
import React, { useState, createContext, useEffect } from 'react';
|
||
|
import { Course, Group } from '../types';
|
||
|
|
||
|
interface courseContext {
|
||
|
courses: Array<Course>;
|
||
|
choosenGroups: Array<Group>;
|
||
|
addCourse: (courses: Course) => void;
|
||
|
addGroup: (group: Group) => void;
|
||
|
}
|
||
|
export const coursesContext = createContext<courseContext | null>(null);
|
||
|
|
||
|
interface CoursesProviderProps {
|
||
|
children: React.ReactNode;
|
||
|
}
|
||
|
|
||
|
export const CoursesProvider = ({ children }: CoursesProviderProps) => {
|
||
|
const [courses, setCourses] = useState<Array<Course>>([]);
|
||
|
const [choosenGroups, setChoosenGroups] = useState<Array<Group>>([]);
|
||
|
|
||
|
const addCourse = (course: Course) => {
|
||
|
setCourses([...courses, course]);
|
||
|
};
|
||
|
const addGroup = (group: Group) => {
|
||
|
setChoosenGroups([...choosenGroups, group]);
|
||
|
};
|
||
|
|
||
|
return (
|
||
|
<coursesContext.Provider value={{ courses, choosenGroups, addCourse, addGroup }}>
|
||
|
{children}
|
||
|
</coursesContext.Provider>
|
||
|
);
|
||
|
};
|