-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathContext.jsx
91 lines (78 loc) · 2.03 KB
/
Context.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import { createContext, useState, useEffect } from "react";
import useAuth from "./helpers/useAuth";
import useLocalStorage from "./helpers/useLocalStorage";
// Context
const Context = createContext();
export default Context;
// Provider
export const Provider = (props) => {
const [drawer, setDrawer] = useState(false);
const [event, setEvent] = useState(null);
const auth = useAuth();
const [cart, setCartR] = useLocalStorage("cart");
useEffect(() => {
console.log("Cart is:");
if (cart) console.log(cart);
}, [cart]);
const setCart = (event, remove = false, removeAll = false) => {
const myEvents = auth.myEvents;
if (removeAll) {
setCartR(null);
return null;
}
if (!auth.user) {
auth.setError("Please Login first!!");
return null;
}
if (remove) {
let cartN = cart.filter((e) => e != event);
setCartR(cartN);
return cartN;
}
if (myEvents == null) {
auth.setError("Try again after some time!!");
return null;
}
if (
myEvents.some(({ event_name, category_name }) => {
return (
event_name == event.eventName && category_name == event.category_name
);
})
) {
auth.setError("Already registered for the event!");
return null;
}
if (
cart?.some(
({ eventName, category_name }) =>
eventName == event.eventName && category_name == event.category_name
)
) {
auth.setError("Event already in cart!");
return null;
}
if (cart) {
let cartN = [].concat(...cart);
cartN = cartN.concat(event);
setCartR(cartN);
} else setCartR([event]);
auth.setSuccess("Event added in cart!");
return event;
};
return (
<Context.Provider
value={{
drawer,
setDrawer,
event,
setEvent,
cart,
setCart,
...auth,
}}
>
{props.children}
</Context.Provider>
);
};