修改密码、管理员删帖、促销、退出登录
Change-Id: I2cc0e211ac5a04f9e89d0736fadd25541a5fccb9
diff --git a/src/pages/UserCenter/UserDynamics.jsx b/src/pages/UserCenter/UserDynamics.jsx
index e69de29..05d9046 100644
--- a/src/pages/UserCenter/UserDynamics.jsx
+++ b/src/pages/UserCenter/UserDynamics.jsx
@@ -0,0 +1,88 @@
+import React, { useEffect, useState } from 'react';
+import { useUser } from '../../context/UserContext';
+import './UserDynamics.css';
+
+const UserDynamics = () => {
+ const { user } = useUser();
+ const [dynamics, setDynamics] = useState([]);
+ const [loading, setLoading] = useState(true);
+
+ useEffect(() => {
+ if (!user?.userId) return;
+
+ const fetchDynamics = async () => {
+ try {
+ const res = await fetch(`/echo/dynamic/${user.userId}/getAdynamic`);
+ const data = await res.json();
+ setDynamics(data.dynamic || []);
+ } catch (err) {
+ console.error('获取动态失败:', err);
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ fetchDynamics();
+ }, [user]);
+
+ if (loading) return <div className="user-dynamics-loading">加载中...</div>;
+
+ return (
+ <div className="user-dynamics-container">
+ <h2 className="user-dynamics-title">我的动态</h2>
+ {dynamics.length === 0 ? (
+ <div className="user-dynamics-empty">暂无动态</div>
+ ) : (
+ dynamics.map((item) => (
+ <div key={item.dynamic_id} className="dynamic-card">
+ <div className="dynamic-header">
+ <img
+ className="dynamic-avatar"
+ src={item.avatar_url}
+ alt={item.username}
+ />
+ <div className="dynamic-userinfo">
+ <span className="dynamic-username">{item.username}</span>
+ <span className="dynamic-time">{new Date(item.time).toLocaleString()}</span>
+ </div>
+ </div>
+ <div className="dynamic-content">
+ {item.title && <h4 className="dynamic-title">{item.title}</h4>}
+ <p>{item.content}</p>
+ {/* {item.images && (
+ <div className="dynamic-images">
+ {JSON.parse(item.images).map((img, index) => (
+ <img key={index} src={img} alt={`图${index + 1}`} />
+ ))}
+ </div>
+ )} */}
+ {item.images && (
+ <div className="dynamic-images">
+ {(() => {
+ let imageList = [];
+ try {
+ if (item.images.startsWith('[')) {
+ imageList = JSON.parse(item.images);
+ } else {
+ imageList = [item.images];
+ }
+ } catch (e) {
+ console.error('解析 images 出错:', e);
+ }
+
+ return imageList.map((img, index) => (
+ <img key={index} src={img} alt={`图${index + 1}`} />
+ ));
+ })()}
+ </div>
+ )}
+
+ </div>
+ </div>
+ ))
+ )}
+ </div>
+ );
+};
+
+export default UserDynamics;