diff --git a/src/components/calendar/calendar.js b/src/components/calendar/calendar.js index 89732028ac7a4f532e346e3b19cb7a65972e18b4..bb768a9905cab6caa3f1d3a46dc52ead7c909c4d 100644 --- a/src/components/calendar/calendar.js +++ b/src/components/calendar/calendar.js @@ -100,11 +100,11 @@ const MySchedulerApp = () => { const closeScheduleListModal = () => { setScheduleListModalOpen(false); }; + const handleSaveEvent = async(formData) => { try{ if (formData.endTime < formData.startTime) { alert('종료 시간은 시작 시간보다 늦어야 합니다.'); - return; } const jsonData=JSON.stringify(formData); console.log('Sending data to the server:', jsonData); @@ -156,8 +156,6 @@ const MySchedulerApp = () => { for (const backendData of data) { const startDate = new Date(backendData.date); - - // "14:00" 형식의 문자열을 받아 현재 날짜에 추가 const startTimeParts = backendData.startTime.split(':'); const endTimeParts = backendData.endTime.split(':'); const startTime = new Date(startDate); @@ -176,8 +174,6 @@ const MySchedulerApp = () => { title: backendData.title, color:clr, content: backendData.content - - //comment: backendData.Description }); } @@ -406,21 +402,13 @@ const CustomEditItem = (props) => { <MonthView /> </Scheduler> - {/* <span className="buttonhidden">시간표</span> */} </div> <ScheduleAddModal isOpen={isModalOpen} onClose={closeModal} onSave={handleSaveEvent} /> - - - {/* <ScheduleDeleteModal - isOpen={isDeModalOpen} - onClose={closeDeModal} - onDelete={handleChange} - - /> */} + <ScheduleInquiryModal isOpen={isInModalOpen} onClose={closeInModal} diff --git a/src/components/channel/addNotice.js b/src/components/channel/addNotice.js index dc203858807e71c323e7805c4fbbdfdf966d5ef7..f2300dd8a86a330c6d3788dce209b305016f9068 100644 --- a/src/components/channel/addNotice.js +++ b/src/components/channel/addNotice.js @@ -1,7 +1,8 @@ -import React, {useState} from 'react'; +import React, {useState, useContext} from 'react'; import addNoticeStyles from "./addNotice.module.css"; - +import { SearchContext } from '../search'; const AddNotice = ({ isOpen, onClose }) => { + const {setfetchCount}=useContext(SearchContext); const [formData, setFormData] = useState({ title: '', content: '', @@ -52,6 +53,7 @@ const AddNotice = ({ isOpen, onClose }) => { if (response.ok) { // 성공적으로 공지가 생성됨 alert('새로운 공지가 성공적으로 생성되었습니다.'); + setfetchCount( prevNum=> (prevNum+1)); onClose(); } else { // 오류 처리 diff --git a/src/components/channel/existingChannel.js b/src/components/channel/existingChannel.js index f9f7d5a85f23b610195c4b25498961394668ecd3..480a7034e3acfa848537fe871546bb02eb90683e 100644 --- a/src/components/channel/existingChannel.js +++ b/src/components/channel/existingChannel.js @@ -3,7 +3,7 @@ import { useNavigate } from 'react-router-dom'; import existingStyles from './existingChannel.module.css' import Channel from './channel'; import AddNotice from './addNotice'; - +// import { SearchContext } from '../search'; import ChangeIcon from './iconModal'; import ChangePicture from './pictureModal'; @@ -13,6 +13,7 @@ const ExistingChannel=({isOpen, onClose, data})=>{ const { userData } = useContext(AuthContext); const [changePicture, setChangePicture]=useState(''); const [changeIcon, setChangeIcon]=useState(''); + // const {setfetchCount}=useContext(SearchContext); const openModal=()=>{ setIsModal(true); } diff --git a/src/components/channel/iconModal.js b/src/components/channel/iconModal.js index ef5a1e39ab82ee3d826953700c770239c2d12f94..e154d9205f1f592c6150987ad90b4a58d85271dc 100644 --- a/src/components/channel/iconModal.js +++ b/src/components/channel/iconModal.js @@ -1,8 +1,9 @@ -import React, { useState } from 'react'; +import React, { useState, useContext} from 'react'; import iconStyles from './iconModal.module.css'; - +import { SearchContext } from '../search'; const ChangeIcon=({ isOpen, onClose})=> { const [image, setImage] = useState(null); + const {setfetchCount}=useContext(SearchContext); const handleImageChange = (e) => { @@ -34,6 +35,7 @@ const ChangeIcon=({ isOpen, onClose})=> { const successData = await response.json(); console.log(successData); alert('채널 프로필 수정을 성공하였습니다.'); + setfetchCount( prevNum=> (prevNum+1)); onClose(); // 프로필 수정 후 로직 (예: 화면 갱신 등) } catch (error) { diff --git a/src/components/channel/myChannelModal.js b/src/components/channel/myChannelModal.js index e8c473bbe1fe6b5305f65a04ef1ee67a60246ff4..fd17db3683366eb6acaca8fe36ea1abae7394400 100644 --- a/src/components/channel/myChannelModal.js +++ b/src/components/channel/myChannelModal.js @@ -2,7 +2,6 @@ import React, {useState, useEffect} from 'react'; import { useNavigate } from 'react-router-dom'; import modalStyles from "./myChannelModal.module.css"; import CreateChannel from './createChannel' - const MyChannelModal=({isOpen, onClose})=>{ const [IsCreateModal, setCreateModal]=useState(false); const openCreateModal=()=>{ diff --git a/src/components/channel/pictureModal.js b/src/components/channel/pictureModal.js index b73c2769404247ae66668c5e87cbe04181e2aa44..3419e2c2198a3ff7bae580d51eccab7278e3acee 100644 --- a/src/components/channel/pictureModal.js +++ b/src/components/channel/pictureModal.js @@ -1,9 +1,9 @@ -import React, { useState } from 'react'; +import React, { useState, useContext } from 'react'; import pictureStyles from './pictureModal.module.css'; - +import { SearchContext } from '../search'; const ChangePicture=({ isOpen, onClose})=> { const [image, setImage] = useState(null); - + const {setfetchCount}=useContext(SearchContext); const handleImageChange = (e) => { const selectedImage = e.target.files[0]; @@ -34,6 +34,7 @@ const ChangePicture=({ isOpen, onClose})=> { const successData = await response.json(); console.log(successData); alert('채널 배경 사진 수정을 성공하였습니다.'); + setfetchCount( prevNum=> (prevNum+1)); onClose(); // 프로필 수정 후 로직 (예: 화면 갱신 등) diff --git a/src/components/search.js b/src/components/search.js index 128eae730674f2a0162f93bc719ffbd7b6839501..f90cfff68fb8048817ef883bfe028e08237a3f71 100644 --- a/src/components/search.js +++ b/src/components/search.js @@ -1,10 +1,10 @@ -import React, { useState } from 'react'; +import React, { useState, createContext, useEffect } from 'react'; import { useNavigate } from "react-router-dom"; import searchStyles from './search.module.css'; import CreateRecruit from './recruit/createRecruit'; import MyChannelModal from './channel/myChannelModal'; import ExistingChannel from './channel/existingChannel'; - +export const SearchContext = createContext(); function Search({ currentPage, onUrlGenerated, onFirstQueryString, onSecondQueryString }){ const [isModalOpen, setIsModalOpen] = useState(false); const [searchTerm, setSearchTerm] = useState(''); @@ -12,7 +12,12 @@ function Search({ currentPage, onUrlGenerated, onFirstQueryString, onSecondQuery const [sortType, setSortType] = useState(''); const [haveChannel, sethaveChannel]=useState(true); const [myChannelData, setmyChannelData]=useState(''); - + const [fetchCount, setfetchCount] = useState(0); + const searchValue = { + fetchCount, + setfetchCount, + }; + const navigate = useNavigate(); const openModal = () => { @@ -51,7 +56,10 @@ function Search({ currentPage, onUrlGenerated, onFirstQueryString, onSecondQuery console.error('Error fetching weekly schedules:', error); } }; - + useEffect(() => { + + fetchChannelData(); + }, [fetchCount]); const handleSearch = () => { let searchURL = `${currentPage}/search`; let firstQueryString = '?'; @@ -142,12 +150,15 @@ function Search({ currentPage, onUrlGenerated, onFirstQueryString, onSecondQuery {currentPage === 'recruits' && ( <CreateRecruit isOpen={isModalOpen} onClose={closeModal}/> )} + {currentPage === 'subscribes' && (!haveChannel)&&( <MyChannelModal isOpen={isModalOpen} onClose={closeModal}/> )} + <SearchContext.Provider value={searchValue}> {currentPage==='subscribes' && (haveChannel) &&( <ExistingChannel isOpen={isModalOpen} onClose={closeModal} data={myChannelData}/> )} + </SearchContext.Provider> </div> )