diff --git a/src/components/channel/addNotice.js b/src/components/channel/addNotice.js index b9d02fb01e35d4a9063218e5b7d473a86351d8e4..94a3ecefd77f173f95f8c4d0ac0d6c7616addeeb 100644 --- a/src/components/channel/addNotice.js +++ b/src/components/channel/addNotice.js @@ -3,20 +3,16 @@ import addNoticeStyles from "./addNotice.module.css"; const AddNotice=({isOpen, onClose})=>{ const [formData, setFormData] = useState({ - data: { - title:'', - content: '', - }, + title:'', + content: '', image: null }); const handleInputChange = (e) => { const { name, value } = e.target; setFormData((prevData) => ({ ...prevData, - data: { - ...prevData.data, - [name]: value, - }, + [name]: value, + })); }; const handleImageChange = (e) => { @@ -33,20 +29,22 @@ const handleImageChange = (e) => { const handleSubmit = async (e) => { e.preventDefault(); - if(formData.data.title === ''){ + if(formData.title === ''){ alert('채널명을 입력해주세요.'); return; - } else if(formData.data.content === ''){ + } else if(formData.content === ''){ alert('소개글을 입력해주세요.'); return; } - const jsonDataString = JSON.stringify(formData.data); + const jsonDataString = JSON.stringify(formData); try { const formDataToSend = new FormData(); - formDataToSend.append('data', jsonDataString); + + formDataToSend.append('title', formData.title); + formDataToSend.append('content', formData.content); formDataToSend.append('image', formData.image); - const response = await fetch('/api/channel', { + const response = await fetch('/api/channels/notices', { method: 'POST', body: formDataToSend, }); @@ -78,16 +76,16 @@ const handleSubmit = async (e) => { <form onSubmit={handleSubmit}> <div className={addNoticeStyles.title}> <label>공지 제목*</label> - <input type="text" name="title" value={formData.data.title} onChange={handleInputChange} placeholder="채널명을 입력하세요.(50자 이내)"/> + <input type="text" name="title" onChange={handleInputChange} placeholder="채널명을 입력하세요.(50자 이내)"/> </div> <div className={addNoticeStyles.content}> <label>공지 내용*</label> - <textarea name="content" value={formData.data.content} onChange={handleInputChange} placeholder="내용을 입력하세요."/> + <textarea name="content" onChange={handleInputChange} placeholder="내용을 입력하세요."/> </div> <div className={addNoticeStyles.image}> <label>이미지 첨부</label> - <input type="file" name="image"value={formData.data.image} onChange={handleImageChange} /> + <input type="file" name="image" onChange={handleImageChange} /> </div> diff --git a/src/components/channel/channel.js b/src/components/channel/channel.js index a59b239c0188074667b79b63da129f8d6de0a80f..27f1cf3131c033876e9fe6d2a43a38284686cbf8 100644 --- a/src/components/channel/channel.js +++ b/src/components/channel/channel.js @@ -70,7 +70,7 @@ function handleSubscribe() { const apiUrl = `/api/channels/${data.data.userID}`; fetch(apiUrl, { - method: 'POST', + method: 'PUT', headers: { 'Content-Type': 'application/json', diff --git a/src/components/infiniteScroll.js b/src/components/infiniteScroll.js index 756ac4e513ba45581938e7b7443276cbb1addcb7..6cd5a45612c7847b16ed6e7d0a44985a654f111f 100644 --- a/src/components/infiniteScroll.js +++ b/src/components/infiniteScroll.js @@ -20,24 +20,13 @@ function InfiniteScroll(props){ setMinId(jsonData['minId']); if(page==='channels'){ - if (newData.length > 0) { - const components = []; - for (let i = 0; i < newData.length; i += 2) { - const component = ( - - <div className={InfiniteScrollStyles.itemContainer}> - <div className={InfiniteScrollStyles.firstitem}> - <ChannelItem props={newData[i]} /></div> - <div className={InfiniteScrollStyles.seconditem}>{i + 1 < newData.length && <ChannelItem props={newData[i + 1]} />}</div> - </div> - - ); - components.push(component); - console.log('ne', newData[i]); - } - setItems((prevItem) => [...prevItem, ...components]); + if(newData.length>0){ + const components=newData.map((item)=>( + <ChannelItem data={item}/> + )); + setItems(prevItem => [...prevItem, ...components]); } - }else { + }else { if(newData.length > 0) { const components = newData.map((item) => ( <PageItem data={item}/> @@ -72,24 +61,18 @@ function InfiniteScroll(props){ setMinId(jsonData['minId']); if(page==='channels'){ - if (newData.length > 0) { - const components = []; - for (let i = 0; i < newData.length; i += 2) { - const component = ( - - <div className={InfiniteScrollStyles.itemContainer}> - <div className={InfiniteScrollStyles.firstitem}> - <ChannelItem props={newData[i]} /></div> - <div className={InfiniteScrollStyles.seconditem}>{i + 1 < newData.length && <ChannelItem props={newData[i + 1]} />}</div> - </div> - - ); - components.push(component); - console.log('ne', newData[i]); - } - setItems((prevItem) => [...prevItem, ...components]); + if(newData.length>0){ + for (let i = 0; i < newData.length; i += 2) { + const component = ( + <div key={i} className="channelItemRow"> + <ChannelItem data={newData[i]} /> + {i + 1 < newData.length && <ChannelItem data={newData[i + 1]} />} + </div> + ); + setItems((prevItem) => [...prevItem, component]); + } } - }else { + }else { if(newData.length > 0) { const components = newData.map((item) => ( <PageItem data={item}/> diff --git a/src/components/search.js b/src/components/search.js index 18aaff44ff9cb9ef95622b1a861d91a019fe9d2b..76d82f7c048a81bbff40e2c692afb23063acdd5b 100644 --- a/src/components/search.js +++ b/src/components/search.js @@ -12,7 +12,7 @@ function Search({ currentPage, onUrlGenerated, onFirstQueryString, onSecondQuery const [searchTerm, setSearchTerm] = useState(''); const [searchType, setSearchType] = useState('title'); const [sortType, setSortType] = useState(''); - const [haveChannel, sethaveChannel]=useState(false); + const [haveChannel, sethaveChannel]=useState(true); const [myChannelData, setmyChannelData]=useState(''); const navigate = useNavigate(); @@ -32,30 +32,27 @@ function Search({ currentPage, onUrlGenerated, onFirstQueryString, onSecondQuery const goToSubscribe = ()=>{ navigate("/subscribes"); } - + const fetchChannelData = async () => { try { openModal(); const response = await fetch('/api/channels/mychannel'); - if (!response.ok) { - throw new Error(`HTTP error! Status: ${response.status}`); - } - const backendData = await response.json(); - setmyChannelData(backendData); - + console.log(backendData); + + if (backendData.data ) { sethaveChannel(true); + // openModal(); + setmyChannelData(backendData); } else{ sethaveChannel(false); } } catch (error) { - console.error('Error fetching channel data:', error.message); - - return null; + console.error('Error fetching weekly schedules:', error); } - }; + }; diff --git a/src/pages/subscribe.js b/src/pages/subscribe.js index 4533810f59c9e15ef85b7d9bb7c121b4e253659b..09d9e3b7ae775d6260bd8f8c6303f478298c18ff 100644 --- a/src/pages/subscribe.js +++ b/src/pages/subscribe.js @@ -7,7 +7,7 @@ function Subscribe(){ return ( <div> <Header></Header> - <Search currentPage='subscribes'></Search> + <Search currentPage='subscribes' onUrlGenerated={''}></Search> <ChannelList></ChannelList> </div> )