blob: 1b98a44aa51bf6d41c188d680bc49827b4f70757 [file] [log] [blame]
Krishyaf1d0ea82025-05-03 17:01:58 +08001// // import React, { useState } from 'react';
2// // import axios from 'axios';
3// // import { useNavigate } from 'react-router-dom';
4// // import './CreateMoment.css';
5// // import Header from '../../components/Header';
6
Krishya2283d882025-05-27 22:25:19 +08007// //
Krishyaf1d0ea82025-05-03 17:01:58 +08008// // const USER_ID = 456;
9
10// // const CreateMoment = () => {
11// // const [title, setTitle] = useState('');
12// // const [content, setContent] = useState('');
13// // const [previewUrls, setPreviewUrls] = useState([]);
14// // const [images, setImages] = useState([]);
15// // const navigate = useNavigate();
16
17// // const handleImageChange = async (e) => {
18// // const files = Array.from(e.target.files);
19// // if (!files.length) return;
20
21// // setPreviewUrls(files.map(f => URL.createObjectURL(f)));
22
23// // try {
24// // const uploaded = await Promise.all(
25// // files.map(file => uploadImageToServer(file))
26// // );
27// // setImages(uploaded);
28// // } catch (err) {
29// // console.error('图片上传失败:', err);
30// // alert('有图片上传失败,请重试');
31// // }
32// // };
33
34// // const uploadImageToServer = async (file) => {
35// // const formData = new FormData();
36// // formData.append('file', file);
Krishya2283d882025-05-27 22:25:19 +080037// // const res = await axios.post(`/upload`, formData, {
Krishyaf1d0ea82025-05-03 17:01:58 +080038// // headers: {'Content-Type': 'multipart/form-data'}
39// // });
40// // return res.data.url;
41// // };
42
43// // const handleSubmit = async () => {
44// // if (!content.trim()) {
45// // alert('内容不能为空');
46// // return;
47// // }
48// // try {
49// // await axios.post(
Krishya2283d882025-05-27 22:25:19 +080050// // `/echo/users/${USER_ID}/CreateMoment`,
Krishyaf1d0ea82025-05-03 17:01:58 +080051// // {
52// // title: title.trim() || undefined,
53// // friend_content: content.trim(),
54// // images
55// // }
56// // );
57// // navigate('/friend-moments');
58// // } catch (err) {
59// // console.error('发布失败:', err);
60// // alert('发布失败,请稍后重试');
61// // }
62// // };
63
64// // return (
65// // <div className="create-feed-page">
66// // <Header/>
67// // <div className="cf-header">
68// // <button onClick={() => navigate(-1)} style={{padding : '5px 10px', backgroundColor: '#BA929A', color: 'white'}}>返回</button>
69// // <h3>发布新动态</h3>
70// // </div>
71
72// // <div className="cf-form">
73// // <input
74// // type="text"
75// // placeholder="标题"
76// // value={title}
77// // onChange={e => setTitle(e.target.value)}
78// // />
79// // <textarea
80// // placeholder="写下你的内容..."
81// // value={content}
82// // onChange={e => setContent(e.target.value)}
83// // />
84// // <input
85// // type="file"
86// // accept="image/*"
87// // multiple
88// // onChange={handleImageChange}
89// // />
90// // <div className="cf-preview">
91// // {previewUrls.map((url, i) => (
92// // <img key={i} src={url} alt={`预览 ${i}`} />
93// // ))}
94// // </div>
95// // <button className="cf-submit-btn" onClick={handleSubmit}>
96// // 发布
97// // </button>
98// // </div>
99// // </div>
100// // );
101// // };
102
103// // export default CreateMoment;
104// import React, { useState } from 'react';
105// import axios from 'axios';
106// import { useNavigate } from 'react-router-dom';
107// import './CreateMoment.css';
108// import Header from '../../components/Header';
109
Krishya2283d882025-05-27 22:25:19 +0800110//
Krishyaf1d0ea82025-05-03 17:01:58 +0800111// const USER_ID = 456;
112
113// const CreateMoment = ({ onClose, fetchFeeds }) => {
114// const [title, setTitle] = useState('');
115// const [content, setContent] = useState('');
116// const [previewUrls, setPreviewUrls] = useState([]);
117// const [images, setImages] = useState([]);
118// const navigate = useNavigate();
119
120// const handleImageChange = async (e) => {
121// const files = Array.from(e.target.files);
122// if (!files.length) return;
123// setPreviewUrls(files.map(f => URL.createObjectURL(f)));
124// try {
125// const uploaded = await Promise.all(
126// files.map(file => uploadImageToServer(file))
127// );
128// setImages(uploaded);
129// } catch (err) {
130// console.error('图片上传失败:', err);
131// alert('有图片上传失败,请重试');
132// }
133// };
134
135// const uploadImageToServer = async (file) => {
136// const formData = new FormData();
137// formData.append('file', file);
Krishya2283d882025-05-27 22:25:19 +0800138// const res = await axios.post(`/upload`, formData, {
Krishyaf1d0ea82025-05-03 17:01:58 +0800139// headers: { 'Content-Type': 'multipart/form-data' }
140// });
141// return res.data.url;
142// };
143
144// const handleSubmit = async () => {
145// if (!content.trim()) {
146// alert('内容不能为空');
147// return;
148// }
149// try {
150// await axios.post(
Krishya2283d882025-05-27 22:25:19 +0800151// `/echo/users/${USER_ID}/CreateMoment`,
Krishyaf1d0ea82025-05-03 17:01:58 +0800152// {
153// title: title.trim() || undefined,
154// friend_content: content.trim(),
155// images
156// }
157// );
158// onClose();
159// fetchFeeds();
160// } catch (err) {
161// console.error('发布失败:', err);
162// alert('发布失败,请稍后重试');
163// }
164// };
165
166// return (
167// <div className="create-feed-page">
168// <div className="cf-header">
169// <button onClick={onClose} style={{ padding: '5px 10px', backgroundColor: '#BA929A', color: 'white' }}>
170// 返回
171// </button>
172// <h3>发布新动态</h3>
173// </div>
174// <div className="cf-form">
175// <input
176// type="text"
177// placeholder="标题"
178// value={title}
179// onChange={e => setTitle(e.target.value)}
180// />
181// <textarea
182// placeholder="写下你的内容..."
183// value={content}
184// onChange={e => setContent(e.target.value)}
185// />
186// <input
187// type="file"
188// accept="image/*"
189// multiple
190// onChange={handleImageChange}
191// />
192// <div className="cf-preview">
193// {previewUrls.map((url, i) => (
194// <img key={i} src={url} alt={`预览 ${i}`} />
195// ))}
196// </div>
197// <button className="cf-submit-btn" onClick={handleSubmit}>
198// 发布
199// </button>
200// </div>
201// </div>
202// );
203// };
204
205// export default CreateMoment;
206