Skip to content
Snippets Groups Projects
Select Git revision
  • 14a7f602326f5e74773c6990af828594ed643e82
  • development default protected
  • temp
  • master protected
  • #36
  • #24
  • #39
  • #38
  • #37
  • #35
  • #34
  • #33
  • #32
  • #31
  • #21
  • #22
  • #20
  • #23
  • #19
  • #17
  • #16
21 results

index.js

Blame
  • 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>
      );
    };
    
    //로그인 상태 전역 관리