Profiles should be fine now. I just need to do server code that's it

This commit is contained in:
2026-01-19 19:43:36 -07:00
parent d0bd8c796e
commit ab12e135dd
4 changed files with 91 additions and 125 deletions

View File

@@ -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<ProfileMenu>().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<ProfileMenu>().Init();
});
profileButton.gameObject.SetActive(true);
}

View File

@@ -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";
}

View File

@@ -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);
}
}

View File

@@ -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; }