Skip to content
Snippets Groups Projects
Select Git revision
  • 2a16f88fd5e57e943cf7ccf78ffb60dba208cc7f
  • master default protected
2 results

MusicList.js

Blame
  • AddPlace.js 20.60 KiB
    import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react';
    import '../styles/AddPlace.css';
    import { FaPhoneAlt, FaStar, FaPlus, FaCalendarAlt, FaUser, FaTicketAlt } from 'react-icons/fa';
    import axios from 'axios';
    import { toast } from 'react-toastify';
    import { AREA_CODE } from '../constants/areaCode';
    import { useAuth } from '../App';
    
    const API_URL = process.env.REACT_APP_SERVER_URL;
    
    const AddPlace = ({ tripId, day, onBack, onPlaceSelect, tripStartDate, tripEndDate, location, onSuccess }) => {
      const { user } = useAuth();
      const [activeTab, setActiveTab] = useState('attractions');
      const [searchKeyword, setSearchKeyword] = useState('');
      const [favorites, setFavorites] = useState(new Set());
      const [favoriteItems, setFavoriteItems] = useState([]);
      const [debouncedKeyword, setDebouncedKeyword] = useState(searchKeyword);
      const [lastApiCall, setLastApiCall] = useState(0);
      const API_CALL_INTERVAL = 1000;
    
      const [tabStates, setTabStates] = useState({
        attractions: {
          places: [],
          loading: false,
          pageNo: 1,
          hasMore: true,
          totalCount: 0
        },
        festivals: {
          places: [],
          loading: false,
          pageNo: 1,
          hasMore: true,
          totalCount: 0
        }
      });
    
      const updateTabState = (tab, newState) => {
        setTabStates(prev => ({
          ...prev,
          [tab]: {
            ...prev[tab],
            ...newState
          }
        }));
      };
    
      const getAreaCode = (location) => {
        const sido = location.split(/[\s,]/)[0];
        const areaCode = AREA_CODE[sido];
    
        console.log('추출된 지역명:', sido);
        console.log('지역 코드:', areaCode);
    
        if (!areaCode) {
          console.warn(`지역 코드를 찾을 수 없습니다: ${sido}`);
          return null;
        }
    
        return areaCode;
      };
    
      useEffect(() => {
        const currentState = tabStates[activeTab];
        if (currentState.pageNo > 1 && currentState.hasMore) {
          searchPlaces(currentState.pageNo, false);
        }
      }, [tabStates[activeTab].pageNo]);
    
      const handleTabChange = (newTab) => {