blob: 342891236642f3b82ecc1e0ec8abe6a0194529b3 [file] [log] [blame]
Krishyaf1d0ea82025-05-03 17:01:58 +08001import React, { useEffect, useState } from 'react';
2import './MessagePage.css';
3import { useUser } from '../../context/UserContext';
4
Krishya2283d882025-05-27 22:25:19 +08005
Krishyaf1d0ea82025-05-03 17:01:58 +08006
7const mockMessages = [
8 {
9 message_id: 1,
10 sender_username: 'Alice',
11 timestamp: Date.now() - 100000,
12 content: '你好,这是测试消息。',
13 },
14 {
15 message_id: 2,
16 sender_username: 'Bob',
17 timestamp: Date.now() - 50000,
18 content: '欢迎使用我们的平台!',
19 },
20];
21
22const MessagePage = () => {
23 const { user } = useUser(); // 从上下文中获取用户
24 const currentUserId = user?.id;
25
26 const [messages, setMessages] = useState([]);
27 const [loading, setLoading] = useState(true);
28
29 useEffect(() => {
30 if (currentUserId) {
31 fetchMessages();
32 }
33 }, [currentUserId]);
34
35 const fetchMessages = async () => {
36 setLoading(true);
37 try {
38 if (process.env.NODE_ENV === 'development') {
39 await new Promise((r) => setTimeout(r, 500)); // 模拟延迟
40 setMessages(mockMessages);
41 } else {
Krishya2283d882025-05-27 22:25:19 +080042 const response = await fetch(`/echo/messages/${currentUserId}`);
Krishyaf1d0ea82025-05-03 17:01:58 +080043 const data = await response.json();
44 if (data.status === 'success') {
45 setMessages(data.messages);
46 } else {
47 setMessages([]);
48 }
49 }
50 } catch (error) {
51 console.error('加载消息失败:', error);
52 setMessages([]);
53 } finally {
54 setLoading(false);
55 }
56 };
57
58 if (!currentUserId) {
59 return <div className="message-page">未登录,无法加载消息。</div>;
60 }
61
62 if (loading) {
63 return <div className="message-page">加载中...</div>;
64 }
65
66 return (
67 <div className="message-page">
68 <h2>我的消息</h2>
69 {messages.length === 0 ? (
70 <div>暂无消息记录</div>
71 ) : (
72 <ul className="message-list">
73 {messages.map((msg) => (
74 <li key={msg.message_id} className="message-item">
75 <div className="message-header">
76 来自:<strong>{msg.sender_username}</strong>
77 <span className="message-time">
78 {new Date(msg.timestamp).toLocaleString()}
79 </span>
80 </div>
81 <div className="message-content">
82 {msg.content}
83 </div>
84 </li>
85 ))}
86 </ul>
87 )}
88 </div>
89 );
90};
91
92export default MessagePage;