feat(torrents): 优化种子页面功能和交互

- 调整 torrents API 调用,增加更多接口支持
- 优化种子列表展示和操作,支持下载和查看详情
- 新增种子详情页面路由和组件
- 改进上传种子功能,增加表单验证和错误提示
- 优化用户信息展示

Change-Id: I9343f2f446639733ee5800a86bab85a4ac6d1a72
diff --git a/src/features/auth/contexts/AuthContext.jsx b/src/features/auth/contexts/AuthContext.jsx
index 3c53c9c..5b59e68 100644
--- a/src/features/auth/contexts/AuthContext.jsx
+++ b/src/features/auth/contexts/AuthContext.jsx
@@ -6,6 +6,7 @@
   useCallback,
 } from "react";
 import { userLogin, registerUser, logoutUser, adminLogin as adminLoginAPI } from "@/api/auth";
+import { getUserInfo } from "@/api/user";
 import { message } from "antd";
 import { useNavigate } from "react-router-dom"; // 导入 useNavigate
 
@@ -173,6 +174,34 @@
     [user]
   );
 
+  // 更新用户信息的方法
+  const updateUserInfo = useCallback(async (username) => {
+    try {
+      const response = await getUserInfo(username || user?.username);
+      
+      if (response && response.data) {
+        const updatedUserData = {
+          ...user,
+          ...response.data
+        };
+        
+        // 更新localStorage和state
+        localStorage.setItem("user", JSON.stringify(updatedUserData));
+        setUser(updatedUserData);
+        
+        console.log('用户信息已更新:', updatedUserData);
+        return updatedUserData;
+      } else {
+        console.error('获取用户信息失败:响应数据格式错误');
+        return null;
+      }
+    } catch (error) {
+      console.error('更新用户信息失败:', error);
+      message.error('更新用户信息失败: ' + (error.message || '网络错误'));
+      return null;
+    }
+  }, [user]);
+
   const value = {
     user,
     isAuthenticated,
@@ -183,6 +212,7 @@
     logout,
     hasRole,
     reloadAuthData: loadAuthData, // 暴露一个重新加载数据的方法
+    updateUserInfo, // 暴露更新用户信息的方法
   };
 
   return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;