Add reporting

This commit is contained in:
2025-08-24 21:38:39 -07:00
parent ea42566556
commit 04b0ee3201
2 changed files with 1820 additions and 135 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -7,8 +7,6 @@ using System.Threading.Tasks;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using TMPro; using TMPro;
using Unity.VisualScripting;
using UnityEditor;
using UnityEngine; using UnityEngine;
using UnityEngine.Networking; using UnityEngine.Networking;
using UnityEngine.SceneManagement; using UnityEngine.SceneManagement;
@@ -42,8 +40,14 @@ public class ChatroomMenu : MonoBehaviour
public GameObject editMessagePanelSample; public GameObject editMessagePanelSample;
private GameObject editMessagePanelCurrent; private GameObject editMessagePanelCurrent;
public GameObject reportMessagePanel;
public Button reportMessagePanelExitButton;
public Button reportMessagePanelSubmitButton;
public TMP_InputField reportMessagePanelReportReason;
void Start() void Start()
{ {
reportMessagePanelReportReason.transform.GetChild(0).GetChild(1).GetComponent<TMP_Text>().textWrappingMode = TextWrappingModes.Normal;
if (BazookaManager.Instance.GetAccountID() == null || BazookaManager.Instance.GetAccountName() == null || BazookaManager.Instance.GetAccountSession() == null) if (BazookaManager.Instance.GetAccountID() == null || BazookaManager.Instance.GetAccountName() == null || BazookaManager.Instance.GetAccountSession() == null)
{ {
sendButton.interactable = false; sendButton.interactable = false;
@@ -91,9 +95,113 @@ public class ChatroomMenu : MonoBehaviour
Destroy(editMessage); Destroy(editMessage);
selectedMessageForOptions = null; selectedMessageForOptions = null;
}); });
var rowInfo = editMessageChild.GetChild(2);
var usernameText = rowInfo.transform.GetChild(2).GetComponent<TMP_Text>();
var playerIcon = rowInfo.transform.GetChild(3).GetComponent<Image>();
var playerOverlayIcon = playerIcon.transform.GetChild(0).GetComponent<Image>();
var messageText = rowInfo.transform.GetChild(4).GetComponent<TMP_Text>();
var optionsButton = rowInfo.transform.GetChild(5).GetComponent<Button>();
usernameText.text = selectedMessageForOptions.Username;
messageText.text = Encoding.UTF8.GetString(Convert.FromBase64String(selectedMessageForOptions.Content));
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + selectedMessageForOptions.Icon);
if (selectedMessageForOptions.Icon == 1)
{
playerIcon.sprite = Tools.GetIconForUser(selectedMessageForOptions.UserID);
}
playerOverlayIcon.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + selectedMessageForOptions.Overlay);
if (selectedMessageForOptions.Overlay == 0)
{
playerOverlayIcon.gameObject.SetActive(false);
}
else if (selectedMessageForOptions.Overlay == 8)
{
playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f);
}
else if (selectedMessageForOptions.Overlay == 11)
{
playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f);
}
else if (selectedMessageForOptions.Overlay == 13)
{
playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f);
}
try
{
playerIcon.color = new Color(selectedMessageForOptions.BirdColor[0] / 255f, selectedMessageForOptions.BirdColor[1] / 255f, selectedMessageForOptions.BirdColor[2] / 255f);
playerOverlayIcon.color = new Color(selectedMessageForOptions.OverlayColor[0] / 255f, selectedMessageForOptions.OverlayColor[1] / 255f, selectedMessageForOptions.OverlayColor[2] / 255f);
}
catch (Exception)
{
playerIcon.color = Color.white;
playerOverlayIcon.color = Color.white;
}
rowInfo = editMessageChild.GetChild(3);
usernameText = rowInfo.transform.GetChild(2).GetComponent<TMP_Text>();
playerIcon = rowInfo.transform.GetChild(3).GetComponent<Image>();
playerOverlayIcon = playerIcon.transform.GetChild(0).GetComponent<Image>();
messageText = rowInfo.transform.GetChild(4).GetComponent<TMP_Text>();
optionsButton = rowInfo.transform.GetChild(5).GetComponent<Button>();
usernameText.text = selectedMessageForOptions.Username;
messageText.text = Encoding.UTF8.GetString(Convert.FromBase64String(selectedMessageForOptions.Content));
editMessageChildNewContentInputBox.onValueChanged.AddListener((value) => messageText.text = value);
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + selectedMessageForOptions.Icon);
if (selectedMessageForOptions.Icon == 1)
{
playerIcon.sprite = Tools.GetIconForUser(selectedMessageForOptions.UserID);
}
playerOverlayIcon.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + selectedMessageForOptions.Overlay);
if (selectedMessageForOptions.Overlay == 0)
{
playerOverlayIcon.gameObject.SetActive(false);
}
else if (selectedMessageForOptions.Overlay == 8)
{
playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f);
}
else if (selectedMessageForOptions.Overlay == 11)
{
playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f);
}
else if (selectedMessageForOptions.Overlay == 13)
{
playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f);
}
try
{
playerIcon.color = new Color(selectedMessageForOptions.BirdColor[0] / 255f, selectedMessageForOptions.BirdColor[1] / 255f, selectedMessageForOptions.BirdColor[2] / 255f);
playerOverlayIcon.color = new Color(selectedMessageForOptions.OverlayColor[0] / 255f, selectedMessageForOptions.OverlayColor[1] / 255f, selectedMessageForOptions.OverlayColor[2] / 255f);
}
catch (Exception)
{
playerIcon.color = Color.white;
playerOverlayIcon.color = Color.white;
}
optionsPanel.SetActive(false); optionsPanel.SetActive(false);
editMessage.SetActive(true); editMessage.SetActive(true);
}); });
optionsPanelReportButton.onClick.AddListener(() => {
reportMessagePanelReportReason.text = "";
optionsPanel.SetActive(false);
reportMessagePanel.SetActive(true);
});
reportMessagePanelExitButton.onClick.AddListener(() =>
{
editMessagePanelCurrent = null;
reportMessagePanel.SetActive(false);
optionsPanel.SetActive(true);
});
reportMessagePanelSubmitButton.onClick.AddListener(async () =>
{
reportMessagePanel.SetActive(false);
await HandleReport();
editMessagePanelCurrent = null;
selectedMessageForOptions = null;
});
optionsPanelCopyButton.onClick.AddListener(() => optionsPanelCopyButton.onClick.AddListener(() =>
{ {
if (selectedMessageForOptions != null) GUIUtility.systemCopyBuffer = Encoding.UTF8.GetString(Convert.FromBase64String(selectedMessageForOptions.Content)); if (selectedMessageForOptions != null) GUIUtility.systemCopyBuffer = Encoding.UTF8.GetString(Convert.FromBase64String(selectedMessageForOptions.Content));
@@ -256,8 +364,9 @@ public class ChatroomMenu : MonoBehaviour
var messages = JsonConvert.DeserializeObject<ChatroomMessage[]>(response); var messages = JsonConvert.DeserializeObject<ChatroomMessage[]>(response);
var localUserId = BazookaManager.Instance.GetAccountID(); var localUserId = BazookaManager.Instance.GetAccountID();
var sortedMessages = messages.OrderBy(m => m.ID).ToArray(); var sortedMessages = messages.OrderBy(m => m.ID).ToArray();
foreach (var message in messages) for (int i = 0; i < sortedMessages.Length; i++)
{ {
var message = sortedMessages[i];
var obj = content.transform.Find("ChatroomRow_" + message.ID); var obj = content.transform.Find("ChatroomRow_" + message.ID);
if (obj != null || message.Deleted) if (obj != null || message.Deleted)
{ {
@@ -267,7 +376,7 @@ public class ChatroomMenu : MonoBehaviour
} }
else if (obj != null) else if (obj != null)
{ {
obj.SetSiblingIndex((int)message.ID); obj.SetSiblingIndex(i + 1);
if (obj.GetChild(3).GetComponent<TMP_Text>().text != Encoding.UTF8.GetString(Convert.FromBase64String(message.Content))) if (obj.GetChild(3).GetComponent<TMP_Text>().text != Encoding.UTF8.GetString(Convert.FromBase64String(message.Content)))
{ {
obj.GetChild(3).GetComponent<TMP_Text>().text = Encoding.UTF8.GetString(Convert.FromBase64String(message.Content)); obj.GetChild(3).GetComponent<TMP_Text>().text = Encoding.UTF8.GetString(Convert.FromBase64String(message.Content));
@@ -392,6 +501,23 @@ public class ChatroomMenu : MonoBehaviour
button.interactable = false; button.interactable = false;
} }
async Task HandleReport()
{
EncryptedWWWForm dataForm = new();
dataForm.AddField("id", selectedMessageForOptions.ID.ToString());
dataForm.AddField("reason", reportMessagePanelReportReason.text);
dataForm.AddField("token", BazookaManager.Instance.GetAccountSession());
dataForm.AddField("username", BazookaManager.Instance.GetAccountName());
using UnityWebRequest request = UnityWebRequest.Post(SensitiveInfo.SERVER_DATABASE_PREFIX + "reportChatroomMessage.php", dataForm.form);
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
shouldScrollToBottom = true;
StopCoroutine(refreshLoopRoutine);
refreshLoopRoutine = StartCoroutine(Loop());
}
IEnumerator ScrollToBottom() IEnumerator ScrollToBottom()
{ {
yield return new WaitForEndOfFrame(); yield return new WaitForEndOfFrame();