修改好友动态、发布动态、促销模块、创建帖子,Resolve review.
Change-Id: I84a2460dd1208bc703b0527d98225204d03e5efc
diff --git a/src/pages/FriendMoments/CreateMoment.jsx b/src/pages/FriendMoments/CreateMoment.jsx
new file mode 100644
index 0000000..4aca455
--- /dev/null
+++ b/src/pages/FriendMoments/CreateMoment.jsx
@@ -0,0 +1,206 @@
+// // import React, { useState } from 'react';
+// // import axios from 'axios';
+// // import { useNavigate } from 'react-router-dom';
+// // import './CreateMoment.css';
+// // import Header from '../../components/Header';
+
+// // const API_BASE = process.env.REACT_APP_API_BASE;
+// // const USER_ID = 456;
+
+// // const CreateMoment = () => {
+// // const [title, setTitle] = useState('');
+// // const [content, setContent] = useState('');
+// // const [previewUrls, setPreviewUrls] = useState([]);
+// // const [images, setImages] = useState([]);
+// // const navigate = useNavigate();
+
+// // const handleImageChange = async (e) => {
+// // const files = Array.from(e.target.files);
+// // if (!files.length) return;
+
+// // setPreviewUrls(files.map(f => URL.createObjectURL(f)));
+
+// // try {
+// // const uploaded = await Promise.all(
+// // files.map(file => uploadImageToServer(file))
+// // );
+// // setImages(uploaded);
+// // } catch (err) {
+// // console.error('图片上传失败:', err);
+// // alert('有图片上传失败,请重试');
+// // }
+// // };
+
+// // const uploadImageToServer = async (file) => {
+// // const formData = new FormData();
+// // formData.append('file', file);
+// // const res = await axios.post(`${API_BASE}/upload`, formData, {
+// // headers: {'Content-Type': 'multipart/form-data'}
+// // });
+// // return res.data.url;
+// // };
+
+// // const handleSubmit = async () => {
+// // if (!content.trim()) {
+// // alert('内容不能为空');
+// // return;
+// // }
+// // try {
+// // await axios.post(
+// // `${API_BASE}/echo/users/${USER_ID}/CreateMoment`,
+// // {
+// // title: title.trim() || undefined,
+// // friend_content: content.trim(),
+// // images
+// // }
+// // );
+// // navigate('/friend-moments');
+// // } catch (err) {
+// // console.error('发布失败:', err);
+// // alert('发布失败,请稍后重试');
+// // }
+// // };
+
+// // return (
+// // <div className="create-feed-page">
+// // <Header/>
+// // <div className="cf-header">
+// // <button onClick={() => navigate(-1)} style={{padding : '5px 10px', backgroundColor: '#BA929A', color: 'white'}}>返回</button>
+// // <h3>发布新动态</h3>
+// // </div>
+
+// // <div className="cf-form">
+// // <input
+// // type="text"
+// // placeholder="标题"
+// // value={title}
+// // onChange={e => setTitle(e.target.value)}
+// // />
+// // <textarea
+// // placeholder="写下你的内容..."
+// // value={content}
+// // onChange={e => setContent(e.target.value)}
+// // />
+// // <input
+// // type="file"
+// // accept="image/*"
+// // multiple
+// // onChange={handleImageChange}
+// // />
+// // <div className="cf-preview">
+// // {previewUrls.map((url, i) => (
+// // <img key={i} src={url} alt={`预览 ${i}`} />
+// // ))}
+// // </div>
+// // <button className="cf-submit-btn" onClick={handleSubmit}>
+// // 发布
+// // </button>
+// // </div>
+// // </div>
+// // );
+// // };
+
+// // export default CreateMoment;
+// import React, { useState } from 'react';
+// import axios from 'axios';
+// import { useNavigate } from 'react-router-dom';
+// import './CreateMoment.css';
+// import Header from '../../components/Header';
+
+// const API_BASE = process.env.REACT_APP_API_BASE;
+// const USER_ID = 456;
+
+// const CreateMoment = ({ onClose, fetchFeeds }) => {
+// const [title, setTitle] = useState('');
+// const [content, setContent] = useState('');
+// const [previewUrls, setPreviewUrls] = useState([]);
+// const [images, setImages] = useState([]);
+// const navigate = useNavigate();
+
+// const handleImageChange = async (e) => {
+// const files = Array.from(e.target.files);
+// if (!files.length) return;
+// setPreviewUrls(files.map(f => URL.createObjectURL(f)));
+// try {
+// const uploaded = await Promise.all(
+// files.map(file => uploadImageToServer(file))
+// );
+// setImages(uploaded);
+// } catch (err) {
+// console.error('图片上传失败:', err);
+// alert('有图片上传失败,请重试');
+// }
+// };
+
+// const uploadImageToServer = async (file) => {
+// const formData = new FormData();
+// formData.append('file', file);
+// const res = await axios.post(`${API_BASE}/upload`, formData, {
+// headers: { 'Content-Type': 'multipart/form-data' }
+// });
+// return res.data.url;
+// };
+
+// const handleSubmit = async () => {
+// if (!content.trim()) {
+// alert('内容不能为空');
+// return;
+// }
+// try {
+// await axios.post(
+// `${API_BASE}/echo/users/${USER_ID}/CreateMoment`,
+// {
+// title: title.trim() || undefined,
+// friend_content: content.trim(),
+// images
+// }
+// );
+// onClose();
+// fetchFeeds();
+// } catch (err) {
+// console.error('发布失败:', err);
+// alert('发布失败,请稍后重试');
+// }
+// };
+
+// return (
+// <div className="create-feed-page">
+// <div className="cf-header">
+// <button onClick={onClose} style={{ padding: '5px 10px', backgroundColor: '#BA929A', color: 'white' }}>
+// 返回
+// </button>
+// <h3>发布新动态</h3>
+// </div>
+// <div className="cf-form">
+// <input
+// type="text"
+// placeholder="标题"
+// value={title}
+// onChange={e => setTitle(e.target.value)}
+// />
+// <textarea
+// placeholder="写下你的内容..."
+// value={content}
+// onChange={e => setContent(e.target.value)}
+// />
+// <input
+// type="file"
+// accept="image/*"
+// multiple
+// onChange={handleImageChange}
+// />
+// <div className="cf-preview">
+// {previewUrls.map((url, i) => (
+// <img key={i} src={url} alt={`预览 ${i}`} />
+// ))}
+// </div>
+// <button className="cf-submit-btn" onClick={handleSubmit}>
+// 发布
+// </button>
+// </div>
+// </div>
+// );
+// };
+
+// export default CreateMoment;
+