using System; using System.Collections.Generic; using Cysharp.Threading.Tasks; using TMPro; using UnityEngine; using UnityEngine.UI; using WXGame.Network; namespace DefaultNamespace.Component { public class FriendAgreeItemComponent : MonoBehaviour { [Header("UI组件引用")] [SerializeField] private RawImage avatarImage; // 头像图片组件 [SerializeField] private TMP_Text usernameText; // 用户名文本组件 [SerializeField] private Button agreeBt; // 同意按钮 [SerializeField] private Button refuseBt; // 拒绝按钮 [Header("调试设置")] [SerializeField] private bool enableDebugLog = true; // 是否启用调试日志 // 私有字段 private MyFriendReviewDataItem friendData; // 好友数据 /// /// 初始化好友项数据 /// /// 好友数据 public void InitializeFriendItem(MyFriendReviewDataItem data) { if (data == null) { Debug.Log("好友数据为空,无法初始化"); return; } friendData = data; Debug.Log($"开始初始化好友项: {data.user_username}"); // 设置用户名和等级 SetUserInfo(data); // 异步下载头像 DownloadAvatarAsync(data.user_image).Forget(); // 添加按钮点击事件 agreeBt.onClick.AddListener(delegate { Debug.Log($"同意好友请求: {data.user_username}"); // 调用同意好友请求的方法 CheckFriend(friendData.friend_id, "2"); }); refuseBt.onClick.AddListener(delegate { Debug.Log($"拒绝好友请求: {data.user_username}"); // 调用拒绝好友请求的方法 CheckFriend(friendData.friend_id, "3"); }); } /// /// 同意拒绝好友请求 /// private async void CheckFriend(int friend_id, string state) { var result = await WebRequestManager.Instance.PostRequestAsync( url: Apis.GetCheckFriend(), signParams: new Dictionary() { { "friend_id", friend_id}, { "status", state }//2同意 3拒绝 } ); Debug.Log($"同意拒绝好友请求结果: {result.ResponseText}"); } /// /// 设置用户信息(用户名和等级) /// /// 好友数据 private void SetUserInfo(MyFriendReviewDataItem data) { try { // 设置用户名 if (usernameText != null) { usernameText.text = string.IsNullOrEmpty(data.user_username) ? "未知用户" : data.user_username; Debug.Log($"设置用户名: {usernameText.text}"); } else { Debug.Log("用户名文本组件未设置"); } } catch (Exception ex) { Debug.Log($"设置用户信息时发生异常: {ex.Message}"); } } /// /// 异步下载头像 /// /// 头像URL /// UniTask private async UniTask DownloadAvatarAsync(string imageUrl) { try { // 检查URL是否有效 if (string.IsNullOrEmpty(imageUrl)) { Debug.Log("头像URL为空,使用默认头像"); return; } Debug.Log($"开始下载头像: {imageUrl}"); // 使用WebRequestManager下载图片 Texture2D texture = await WebRequestManager.Instance.DownloadImageAsync(imageUrl); if (texture != null) { // 设置头像 SetAvatarTexture(texture); Debug.Log($"头像设置完成,尺寸: {texture.width}x{texture.height}"); } else { Debug.Log("头像下载失败,使用默认头像"); } } catch (Exception ex) { Debug.Log($"下载头像时发生异常: {ex.Message}"); } } /// /// 设置头像纹理 /// /// 要设置的纹理 private void SetAvatarTexture(Texture2D texture) { try { if (avatarImage != null && texture != null) { avatarImage.texture = texture; Debug.Log("头像纹理设置成功"); } else { Debug.Log("头像图片组件未设置或纹理为空"); } } catch (Exception ex) { Debug.Log($"设置头像纹理时发生异常: {ex.Message}"); } } /// /// 获取当前好友数据 /// /// 好友数据 public MyFriendReviewDataItem GetFriendData() { return friendData; } /// /// 清理图片缓存(已移除,使用WebRequestManager的简单缓存) /// public static void ClearCache() { Debug.Log("[FriendItemComponent] 缓存清理功能已移除,使用WebRequestManager的简单缓存"); } /// /// 获取缓存统计信息(已移除,使用WebRequestManager的简单缓存) /// /// 缓存统计信息 public static string GetCacheStats() { return "使用WebRequestManager的简单缓存"; } } }