Select Git revision
-
JunGu Kang authoredJunGu Kang authored
CrewContext.js 2.47 KiB
import React, { createContext, useState, useEffect } from 'react';
const apiUrl = process.env.REACT_APP_API_URL;
export const CrewContext = createContext();
export const CrewProvider = ({ children }) => {
const token = localStorage.getItem('authToken');
const onCreateUser = (newUser) => {
fetch(`${apiUrl}/api/users`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(newUser),
})
.then(response => response.json())
.catch(error => console.error(error));
};
const [crews, setCrews] = useState([]);
const [events, setEvents] = useState([]);
/*useEffect(() => {
// 크루 데이터 가져오기
fetch('/api/crews')
.then(response => response.json())
.then(data => setCrews(data))
.catch(error => console.error(error));
// 이벤트 데이터 가져오기
fetch('/api/events')
.then(response => response.json())
.then(data => setEvents(data))
.catch(error => console.error(error));
}, [crews, events]);*/
const onCreateCrew = (newCrew) => {
fetch(`${apiUrl}/api/crews`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-auth-token': token,
},
body: JSON.stringify({
regionID: newCrew.region,
name: newCrew.name,
sportTypeId: newCrew.type,
capacity: newCrew.capacity,
fee_krw: newCrew.fee,
description: newCrew.bio,
}),
})
.then(response => response.json())
.then(data => {
setCrews(prevCrews => [...prevCrews, data]);
})
.catch(error => console.error(error));
};
const onCreateEvent = (newEvent) => {
fetch('/api/events', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-auth-token': token,
},
body: JSON.stringify({
crewID: null,
regionID: newEvent.region,
name: newEvent.name,
sportTypeId: newEvent.type,
eventDate: newEvent.date,
capacity: newEvent.capacity,
feeCondition: newEvent.condition,
}),
})
.then(response => response.json())
.then(data => {
setEvents(prevEvent => [...prevEvent, data]);
})
.catch(error => console.error(error));
};
return (
<CrewContext.Provider value={{ crews, events, onCreateCrew, onCreateEvent, onCreateUser }}>
{children}
</CrewContext.Provider>
);
};
//로그인 상태 전역 관리