From ab12e135dd920bf376842d30dc39a65e09a6b6b8 Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Mon, 19 Jan 2026 19:43:36 -0700 Subject: [PATCH] Profiles should be fine now. I just need to do server code that's it --- Assets/Scripts/MainMenu.cs | 33 +--- Assets/Scripts/Other/Endpoints.cs | 2 + Assets/Scripts/ProfileMenu.cs | 177 +++++++++--------- .../Scripts/Types/ProfileMessageResponse.cs | 4 - 4 files changed, 91 insertions(+), 125 deletions(-) diff --git a/Assets/Scripts/MainMenu.cs b/Assets/Scripts/MainMenu.cs index fb028fd..d7e5505 100644 --- a/Assets/Scripts/MainMenu.cs +++ b/Assets/Scripts/MainMenu.cs @@ -40,38 +40,7 @@ public class MenuScript : MonoBehaviour { var clone = Instantiate(profilePrefab.gameObject, profilePrefab.gameObject.transform.parent); clone.SetActive(true); - var customIconData = BazookaManager.Instance.GetCustomBirdIconData(); - string customIcon = null; - if (customIconData.Selected != null) - { - foreach (var icon in customIconData.Data) - { - if (icon.UUID == customIconData.Selected) - { - customIcon = icon.Data; - } - } - } - var iconColor = BazookaManager.Instance.GetColorSettingIcon(); - var overlayColor = BazookaManager.Instance.GetColorSettingOverlay(); - await clone.GetComponent().Init( - BazookaManager.Instance.GetGameStoreTotalNormalBerries().ToString(), - BazookaManager.Instance.GetGameStoreTotalPoisonBerries().ToString(), - BazookaManager.Instance.GetGameStoreTotalSlowBerries().ToString(), - BazookaManager.Instance.GetGameStoreTotalUltraBerries().ToString(), - BazookaManager.Instance.GetGameStoreTotalSpeedyBerries().ToString(), - BazookaManager.Instance.GetGameStoreTotalCoinBerries().ToString(), - BazookaManager.Instance.GetGameStoreTotalRandomBerries().ToString(), - BazookaManager.Instance.GetGameStoreTotalAntiBerries().ToString(), - customIconData.Balance.ToString(), - BazookaManager.Instance.GetAccountName().ToString(), - BazookaManager.Instance.GetAccountID() ?? 0, - BazookaManager.Instance.GetBirdIcon(), - BazookaManager.Instance.GetBirdOverlay(), - customIcon, - new Color((int)iconColor[0] / 255f, (int)iconColor[1] / 255f, (int)iconColor[2] / 255f), - new Color((int)overlayColor[0] / 255f, (int)overlayColor[1] / 255f, (int)overlayColor[2] / 255f) - ); + await clone.GetComponent().Init(); }); profileButton.gameObject.SetActive(true); } diff --git a/Assets/Scripts/Other/Endpoints.cs b/Assets/Scripts/Other/Endpoints.cs index 5485de7..84f99a8 100644 --- a/Assets/Scripts/Other/Endpoints.cs +++ b/Assets/Scripts/Other/Endpoints.cs @@ -6,4 +6,6 @@ public class Endpoints public static readonly string LEADERBOARDS_COIN_ENDPOINT = BASE_URL + "/berrydash/leaderboards/coin"; public static readonly string LEADERBOARDS_LEGACY_ENDPOINT = BASE_URL + "/berrydash/leaderboards/legacy"; public static readonly string LEADERBOARDS_TOTAL_ENDPOINT = BASE_URL + "/berrydash/leaderboards/total"; + public static readonly string PROFILE_ENDPOINT = BASE_URL + "/berrydash/profile"; + public static readonly string PROFILE_POSTS_ENDPOINT = BASE_URL + "/berrydash/profile/posts"; } \ No newline at end of file diff --git a/Assets/Scripts/ProfileMenu.cs b/Assets/Scripts/ProfileMenu.cs index dc3d03d..8247076 100644 --- a/Assets/Scripts/ProfileMenu.cs +++ b/Assets/Scripts/ProfileMenu.cs @@ -122,9 +122,8 @@ public class ProfileMenu : MonoBehaviour public async Task Init(BigInteger playerID) { - WWWForm dataForm = new(); - dataForm.AddField("uesrId", playerID.ToString()); - using UnityWebRequest request = UnityWebRequest.Post(SensitiveInfo.SERVER_DATABASE_PREFIX + "berrydash/getAccountProfile.php", dataForm); + if (BazookaManager.Instance.GetAccountID() == playerID) { await Init(); return; } + using UnityWebRequest request = UnityWebRequest.Get(Endpoints.PROFILE_ENDPOINT + "?userId=" + playerID.ToString()); request.SetRequestHeader("Requester", "BerryDashClient"); request.SetRequestHeader("ClientVersion", Application.version); request.SetRequestHeader("ClientPlatform", Application.platform.ToString()); @@ -134,51 +133,82 @@ public class ProfileMenu : MonoBehaviour return; } string response = request.downloadHandler.text; - var jsonResponse = JObject.Parse(response); - if ((bool)jsonResponse["success"]) + try { - var totalNormalBerries = (string)jsonResponse["totalNormalBerries"]; - var totalPoisonBerries = (string)jsonResponse["totalPoisonBerries"]; - var totalSlowBerries = (string)jsonResponse["totalSlowBerries"]; - var totalUltraBerries = (string)jsonResponse["totalUltraBerries"]; - var totalSpeedyBerries = (string)jsonResponse["totalSpeedyBerries"]; - var totalCoinBerries = (string)jsonResponse["totalCoinBerries"]; - var totalRandomBerries = (string)jsonResponse["totalRandomBerries"]; - var totalAntiBerries = (string)jsonResponse["totalAntiBerries"]; - var coins = (string)jsonResponse["coins"]; - var name = (string)jsonResponse["name"]; - var icon = (int)jsonResponse["icon"]; - var overlay = (int)jsonResponse["overlay"]; - var customIcon = (string)jsonResponse["customIcon"]; - var playerIconColorArray = JArray.Parse(jsonResponse["playerIconColor"].ToString()); - var playerIconColor = new Color((int)playerIconColorArray[0] / 255f, (int)playerIconColorArray[1] / 255f, (int)playerIconColorArray[2] / 255f); - var playerOverlayColorArray = JArray.Parse(jsonResponse["playerOverlayColor"].ToString()); - var playerOverlayColor = new Color((int)playerOverlayColorArray[0] / 255f, (int)playerOverlayColorArray[1] / 255f, (int)playerOverlayColorArray[2] / 255f); - await Init( - totalNormalBerries, - totalPoisonBerries, - totalSlowBerries, - totalUltraBerries, - totalSpeedyBerries, - totalCoinBerries, - totalRandomBerries, - totalAntiBerries, - coins, - name, - playerID, - icon, - overlay, - customIcon, - playerIconColor, - playerOverlayColor - ); + var jsonResponse = JObject.Parse(response); + if ((bool)jsonResponse["success"]) + { + var iconColorArray = JArray.Parse(jsonResponse["data"]["iconColor"].Type == JTokenType.Null ? "[255,255,255]" : jsonResponse["data"]["iconColor"].ToString()); + var overlayColorArray = JArray.Parse(jsonResponse["data"]["overlayColor"].Type == JTokenType.Null ? "[255,255,255]" : jsonResponse["data"]["overlayColor"].ToString()); + var iconColor = new Color((int)iconColorArray[0] / 255f, (int)iconColorArray[1] / 255f, (int)iconColorArray[2] / 255f); + var overlayColor = new Color((int)overlayColorArray[0] / 255f, (int)overlayColorArray[1] / 255f, (int)overlayColorArray[2] / 255f); + await Init( + (string)jsonResponse["data"]["stats"]["totalNormalBerries"], + (string)jsonResponse["data"]["stats"]["totalPoisonBerries"], + (string)jsonResponse["data"]["stats"]["totalSlowBerries"], + (string)jsonResponse["data"]["stats"]["totalUltraBerries"], + (string)jsonResponse["data"]["stats"]["totalSpeedyBerries"], + (string)jsonResponse["data"]["stats"]["totalCoinBerries"], + (string)jsonResponse["data"]["stats"]["totalRandomBerries"], + (string)jsonResponse["data"]["stats"]["totalAntiBerries"], + (string)jsonResponse["data"]["stats"]["coins"], + (string)jsonResponse["data"]["username"], + playerID, + int.Parse(jsonResponse["data"]["icon"].Type == JTokenType.Null ? "1" : jsonResponse["data"]["icon"].ToString()), + int.Parse(jsonResponse["data"]["overlay"].Type == JTokenType.Null ? "0" : jsonResponse["data"]["overlay"].ToString()), + (string)jsonResponse["data"]["customIcon"], + iconColor, + overlayColor + ); + } + else + { + Destroy(gameObject); + } } - else + catch { + Destroy(gameObject); } } + public async Task Init() + { + var customIconData = BazookaManager.Instance.GetCustomBirdIconData(); + string customIcon = null; + if (customIconData.Selected != null) + { + foreach (var icon in customIconData.Data) + { + if (icon.UUID == customIconData.Selected) + { + customIcon = icon.Data; + } + } + } + var iconColor = BazookaManager.Instance.GetColorSettingIcon(); + var overlayColor = BazookaManager.Instance.GetColorSettingOverlay(); + await Init( + BazookaManager.Instance.GetGameStoreTotalNormalBerries().ToString(), + BazookaManager.Instance.GetGameStoreTotalPoisonBerries().ToString(), + BazookaManager.Instance.GetGameStoreTotalSlowBerries().ToString(), + BazookaManager.Instance.GetGameStoreTotalUltraBerries().ToString(), + BazookaManager.Instance.GetGameStoreTotalSpeedyBerries().ToString(), + BazookaManager.Instance.GetGameStoreTotalCoinBerries().ToString(), + BazookaManager.Instance.GetGameStoreTotalRandomBerries().ToString(), + BazookaManager.Instance.GetGameStoreTotalAntiBerries().ToString(), + customIconData.Balance.ToString(), + BazookaManager.Instance.GetAccountName().ToString(), + BazookaManager.Instance.GetAccountID() ?? 0, + BazookaManager.Instance.GetBirdIcon(), + BazookaManager.Instance.GetBirdOverlay(), + customIcon, + new Color((int)iconColor[0] / 255f, (int)iconColor[1] / 255f, (int)iconColor[2] / 255f), + new Color((int)overlayColor[0] / 255f, (int)overlayColor[1] / 255f, (int)overlayColor[2] / 255f) + ); + } + async Task RefreshPosts(BigInteger playerID, string playerName) { exitButton.interactable = false; @@ -191,15 +221,15 @@ public class ProfileMenu : MonoBehaviour Destroy(post.gameObject); } } - WWWForm dataForm = new(); - dataForm.AddField("targetId", playerID.ToString()); - using UnityWebRequest request = UnityWebRequest.Post(SensitiveInfo.SERVER_DATABASE_PREFIX + "berrydash/getAccountProfileMessages.php", dataForm); + using UnityWebRequest request = UnityWebRequest.Get(Endpoints.PROFILE_POSTS_ENDPOINT + "?userId=" + playerID.ToString()); request.SetRequestHeader("Requester", "BerryDashClient"); request.SetRequestHeader("ClientVersion", Application.version); request.SetRequestHeader("ClientPlatform", Application.platform.ToString()); await request.SendWebRequest(); if (request.result != UnityWebRequest.Result.Success) { + exitButton.interactable = true; + refreshButton.interactable = true; return; } string response = request.downloadHandler.text; @@ -222,7 +252,7 @@ public class ProfileMenu : MonoBehaviour entryLikesCount.text = Tools.FormatWithCommas(post.Likes); entryLikesButton.onClick.AddListener(() => { - if (canVote && BazookaManager.Instance.GetAccountID() != null && BazookaManager.Instance.GetAccountID() != post.UserID) + if (canVote && BazookaManager.Instance.GetAccountID() != null && BazookaManager.Instance.GetAccountID() != playerID) { var likedPosts = BazookaManager.Instance .GetLikedPosts() @@ -231,9 +261,9 @@ public class ProfileMenu : MonoBehaviour if (!likedPosts.Any(x => x.ToString() == post.ID.ToString())) VotePost(post.ID, entryLikesCount, entryLikesTexture); } }); - entryMessage.text = Encoding.UTF8.GetString(Convert.FromBase64String(post.Content)); + entryMessage.text = post.Content; entryTimestamp.text = post.Timestamp.ToString(); - if (BazookaManager.Instance.GetAccountID() == post.UserID) + if (BazookaManager.Instance.GetAccountID() == playerID) { entryDeleteButton.gameObject.SetActive(true); entryDeleteButton.onClick.AddListener(async () => await DeletePost(entry, post.ID)); @@ -278,9 +308,8 @@ public class ProfileMenu : MonoBehaviour WWWForm dataForm = new(); dataForm.AddField("targetId", postId.ToString()); dataForm.AddField("liked", liked ? "1" : "0"); - dataForm.AddField("username", BazookaManager.Instance.GetAccountName()); - dataForm.AddField("token", BazookaManager.Instance.GetAccountSession()); - using UnityWebRequest request = UnityWebRequest.Post(SensitiveInfo.SERVER_DATABASE_PREFIX + "berrydash/voteAccountProfileMessage.php", dataForm); + using UnityWebRequest request = UnityWebRequest.Put(Endpoints.PROFILE_POSTS_ENDPOINT, dataForm.data); + request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession()); request.SetRequestHeader("Requester", "BerryDashClient"); request.SetRequestHeader("ClientVersion", Application.version); request.SetRequestHeader("ClientPlatform", Application.platform.ToString()); @@ -313,7 +342,7 @@ public class ProfileMenu : MonoBehaviour } } } - catch (Exception) + catch { Debug.LogError("Failed to proccess vote"); } @@ -339,59 +368,29 @@ public class ProfileMenu : MonoBehaviour { WWWForm dataForm = new(); dataForm.AddField("content", message); - dataForm.AddField("username", BazookaManager.Instance.GetAccountName()); - dataForm.AddField("token", BazookaManager.Instance.GetAccountSession()); - using UnityWebRequest request = UnityWebRequest.Post(SensitiveInfo.SERVER_DATABASE_PREFIX + "berrydash/uploadAccountProfileMessage.php", dataForm); + using UnityWebRequest request = UnityWebRequest.Post(Endpoints.PROFILE_POSTS_ENDPOINT, dataForm); + request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession()); request.SetRequestHeader("Requester", "BerryDashClient"); request.SetRequestHeader("ClientVersion", Application.version); request.SetRequestHeader("ClientPlatform", Application.platform.ToString()); await request.SendWebRequest(); - if (request.result != UnityWebRequest.Result.Success) + if (request.result == UnityWebRequest.Result.Success && request.responseCode == 200) { - return; - } - string response = request.downloadHandler.text; - try - { - var jsonResponse = JObject.Parse(response); - if ((bool)jsonResponse["success"]) - { - await RefreshPosts(BazookaManager.Instance.GetAccountID() ?? 0, BazookaManager.Instance.GetAccountName()); - } - } - catch (Exception) - { - Debug.LogError("Failed to upload post"); + await RefreshPosts(BazookaManager.Instance.GetAccountID() ?? 0, BazookaManager.Instance.GetAccountName()); } } async Task DeletePost(GameObject entryObject, BigInteger targetId) { - WWWForm dataForm = new(); - dataForm.AddField("targetId", targetId.ToString()); - dataForm.AddField("username", BazookaManager.Instance.GetAccountName()); - dataForm.AddField("token", BazookaManager.Instance.GetAccountSession()); - using UnityWebRequest request = UnityWebRequest.Post(SensitiveInfo.SERVER_DATABASE_PREFIX + "berrydash/deleteAccountProfileMessage.php", dataForm); + using UnityWebRequest request = UnityWebRequest.Delete(Endpoints.PROFILE_POSTS_ENDPOINT + "?id=" + targetId.ToString()); + request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession()); request.SetRequestHeader("Requester", "BerryDashClient"); request.SetRequestHeader("ClientVersion", Application.version); request.SetRequestHeader("ClientPlatform", Application.platform.ToString()); await request.SendWebRequest(); - if (request.result != UnityWebRequest.Result.Success) + if (request.result == UnityWebRequest.Result.Success && request.responseCode == 200) { - return; - } - string response = request.downloadHandler.text; - try - { - var jsonResponse = JObject.Parse(response); - if ((bool)jsonResponse["success"]) - { - Destroy(entryObject); - } - } - catch (Exception) - { - Debug.LogError("Failed to upload post"); + Destroy(entryObject); } } diff --git a/Assets/Scripts/Types/ProfileMessageResponse.cs b/Assets/Scripts/Types/ProfileMessageResponse.cs index 5702705..bc6d710 100644 --- a/Assets/Scripts/Types/ProfileMessageResponse.cs +++ b/Assets/Scripts/Types/ProfileMessageResponse.cs @@ -9,10 +9,6 @@ public class ProfileMessageResponse [JsonProperty("id")] public BigInteger ID { get; set; } - [Preserve] - [JsonProperty("userId")] - public BigInteger UserID { get; set; } - [Preserve] [JsonProperty("content")] public string Content { get; set; }