Select Git revision
MusicList.js
-
HyunjinNoh authoredHyunjinNoh authored
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) => {