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
import { createContext, useContext, useState } from "react";
import * as api from "../lib/api";
import { toast } from "react-toastify";
export const AppContext = createContext();
export const useAppContext = () => useContext(AppContext);
export function ContextProvider({ children }) {
const [userseats, setUserSeats] = useState([]);
const [seats, setSeats] = useState([]);
const [isLoading, setisLoading] = useState(false);
const LoginOrRegister = async ({ mobile }) => {
try {
const user = await api.GetUserByMobile({ mobile });
if (!user.length) {
//register
const response = await api.Register({ mobile });
return await response;
} else {
//login
return await user[0];
}
} catch (err) {
toast.error(err.message);
}
};
const AddOrUpdateSeats = async ({ id, seats }) => {
try {
const isSeats = userseats.filter((e) => e.id == id);
//check the id
if (!isSeats.length) {
//add seats
const response = await api.AddSeats({ seats });
setUserSeats([...userseats, response]);
} else {
//update seats
const response = await api.UpdateSeats({ id, seats });
const result = userseats.map((e) => (e[id] == id ? response : e));
setUserSeats(result);
}
} catch (err) {
toast.error(err.message);
}
};
const GetAllSeats = async () => {
setisLoading(false);
try {
//to clear the data for glitch
setUserSeats([]);
const response = await api.GetAllSeats();
setUserSeats(response);
setisLoading(true);
} catch (err) {
toast.error(err.message);
}
};
const GetSeats = async () => {
setisLoading(false);
try {
setSeats([]);
const response = await api.GetSeats();
setSeats(response);
setisLoading(true);
} catch (err) {
toast.error(err.message);
}
};
const value = {
userseats,
isLoading,
seats,
LoginOrRegister,
AddOrUpdateSeats,
GetAllSeats,
GetSeats,
};
return <AppContext.Provider value={value}>{children}</AppContext.Provider>;
}