blob: 24028ad3fb700262ab350d133158de08564cbc98 [file] [log] [blame]
San3yuanff75c542025-06-06 20:30:52 +08001import React, { useEffect, useRef } from "react";
San3yuan4d0e8032025-04-04 17:21:40 +08002import { useAppSelector } from "../../hooks/store";
San3yuan2534d422025-04-08 21:43:18 +08003import style from "./style.module.css"
San3yuana2ee30b2025-06-05 21:20:17 +08004import { useApi } from "@/hooks/request";
5import request from "@/utils/request";
6import { getUserInfo } from "@/api/user";
7import { useAppDispatch } from "@/hooks/store";
San3yuan8166d1b2025-06-05 23:15:53 +08008
阳菜,放晴!7e1e3a52025-06-05 23:00:51 +08009import { useNavigate } from "react-router";
San3yuan4d0e8032025-04-04 17:21:40 +080010
San3yuan8166d1b2025-06-05 23:15:53 +080011
San3yuan6f2ed692025-04-16 20:24:49 +080012interface SelfStatusProps {
13 className?: string;
14}
San3yuan4d0e8032025-04-04 17:21:40 +080015
San3yuan6f2ed692025-04-16 20:24:49 +080016const SelfStatus: React.FC<SelfStatusProps> = () => {
阳菜,放晴!7e1e3a52025-06-05 23:00:51 +080017
18 const nav = useNavigate()
San3yuan2534d422025-04-08 21:43:18 +080019 const userName = useAppSelector(state => state.user.userName);
20 const role = useAppSelector(state => state.user.role);
21 const uploadTraffic = useAppSelector(state => state.user.uploadTraffic);
22 const downloadTraffic = useAppSelector(state => state.user.downloadTraffic);
23 const downloadPoints = useAppSelector(state => state.user.downloadPoints);
San3yuan30e245f2025-06-07 20:04:23 +080024 const avatar = useAppSelector(state => state.user.avatar) || 'https://pic.baike.soso.com/ugc/baikepic2/6664/20220301143956-1127285627_png_800_800_370852.jpg/0';
San3yuana2ee30b2025-06-05 21:20:17 +080025 const dispatch = useAppDispatch();
阳菜,放晴!2f987042025-06-08 14:54:50 +080026 const { refresh } = useApi(() => request.get(getUserInfo), false);
27 const fenchData = async () => {
28 const data = await refresh();
29 console.log(data)
30
San3yuana2ee30b2025-06-05 21:20:17 +080031 if (data) {
阳菜,放晴!2f987042025-06-08 14:54:50 +080032 dispatch({ type: "user/getUserInfo", payload: data.userInfo });
San3yuana2ee30b2025-06-05 21:20:17 +080033 }
阳菜,放晴!2f987042025-06-08 14:54:50 +080034 }
35 useEffect(() => {
36 fenchData();
37
38 }, [ dispatch]);
San3yuan2534d422025-04-08 21:43:18 +080039
阳菜,放晴!7e1e3a52025-06-05 23:00:51 +080040 function handleAvatarClick(){
41 nav('/homepage')
42 }
43
San3yuan2534d422025-04-08 21:43:18 +080044 return (
45 <div className={style.container}>
46 <div className={style.left}>
San3yuana2ee30b2025-06-05 21:20:17 +080047 {avatar && avatar.length > 0 ? (
48 <img className={style.avatar} src={avatar} alt="User Avatar" />):null}
San3yuan4d0e8032025-04-04 17:21:40 +080049 </div>
San3yuan2534d422025-04-08 21:43:18 +080050 <div className={style.right}>
51 <div className={style.info}>
52 <p className={style.userName}>{userName}</p>
阳菜,放晴!77743f42025-06-06 23:04:08 +080053 <p
54 className={style.role}
55 onClick={() => nav('/homepage')}
56 style={{ cursor: 'pointer', textDecoration: 'underline' }}>
57 用户组: {role && role.trim().length? role:'N/A'}</p>
San3yuan03ab0642025-04-29 18:00:25 +080058 <p className={style.uploadTraffic}>上传量: {uploadTraffic ? uploadTraffic : 0}</p>
59 <p className={style.downloadTraffic}>下载量: {downloadTraffic ? downloadTraffic : 0}</p>
San3yuan6f2ed692025-04-16 20:24:49 +080060
San3yuan2534d422025-04-08 21:43:18 +080061 <p className={style.shareRatio}>
62 分享率: {uploadTraffic && downloadTraffic ? (uploadTraffic / downloadTraffic).toFixed(2) : "N/A"}
63 </p>
San3yuan03ab0642025-04-29 18:00:25 +080064 <p className={style.downloadPoints}>下载积分: {downloadPoints ? downloadPoints : 0}</p>
San3yuan2534d422025-04-08 21:43:18 +080065 </div>
66 <button className={style.signInButton}>签到</button>
San3yuan4d0e8032025-04-04 17:21:40 +080067 </div>
San3yuan2534d422025-04-08 21:43:18 +080068 </div>
69 );
70};
San3yuan4d0e8032025-04-04 17:21:40 +080071
San3yuan2534d422025-04-08 21:43:18 +080072export default SelfStatus;