blob: d494c52fc1fa1cec9c4ab3f2212b612bd67c1e0a [file] [log] [blame]
Krishya6bf199c2025-06-06 21:14:23 +08001import React, { useEffect, useState } from 'react';
2import { useUser } from '../../context/UserContext';
3import './UserDynamics.css';
4
5const UserDynamics = () => {
6 const { user } = useUser();
7 const [dynamics, setDynamics] = useState([]);
8 const [loading, setLoading] = useState(true);
9
10 useEffect(() => {
11 if (!user?.userId) return;
12
13 const fetchDynamics = async () => {
14 try {
15 const res = await fetch(`/echo/dynamic/${user.userId}/getAdynamic`);
16 const data = await res.json();
17 setDynamics(data.dynamic || []);
18 } catch (err) {
19 console.error('获取动态失败:', err);
20 } finally {
21 setLoading(false);
22 }
23 };
24
25 fetchDynamics();
26 }, [user]);
27
28 if (loading) return <div className="user-dynamics-loading">加载中...</div>;
29
30 return (
31 <div className="user-dynamics-container">
Krishya73cd8822025-06-07 15:48:41 +080032 {/* <h2 className="user-dynamics-title">我的动态</h2> */}
Krishya6bf199c2025-06-06 21:14:23 +080033 {dynamics.length === 0 ? (
34 <div className="user-dynamics-empty">暂无动态</div>
35 ) : (
36 dynamics.map((item) => (
37 <div key={item.dynamic_id} className="dynamic-card">
38 <div className="dynamic-header">
39 <img
40 className="dynamic-avatar"
41 src={item.avatar_url}
42 alt={item.username}
43 />
44 <div className="dynamic-userinfo">
45 <span className="dynamic-username">{item.username}</span>
46 <span className="dynamic-time">{new Date(item.time).toLocaleString()}</span>
47 </div>
48 </div>
49 <div className="dynamic-content">
50 {item.title && <h4 className="dynamic-title">{item.title}</h4>}
51 <p>{item.content}</p>
Krishya6bf199c2025-06-06 21:14:23 +080052 {item.images && (
53 <div className="dynamic-images">
54 {(() => {
55 let imageList = [];
56 try {
57 if (item.images.startsWith('[')) {
58 imageList = JSON.parse(item.images);
59 } else {
60 imageList = [item.images];
61 }
62 } catch (e) {
63 console.error('解析 images 出错:', e);
64 }
65
66 return imageList.map((img, index) => (
67 <img key={index} src={img} alt={`图${index + 1}`} />
68 ));
69 })()}
70 </div>
71 )}
72
73 </div>
74 </div>
75 ))
76 )}
77 </div>
78 );
79};
80
81export default UserDynamics;