using System; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; using Fusion; public class SessionListUIHandler : MonoBehaviour { public TextMeshProUGUI statusText; public GameObject sessionItemListPrefab; public VerticalLayoutGroup verticalLayoutGroup; private List<(SessionInfoUIListItem item, Action handler)> activeItems = new(); public void ClearList() { foreach (var (item, handler) in activeItems) { item.OnJoinSession -= handler; // ✅ Correct way to unsubscribe Destroy(item.gameObject); } activeItems.Clear(); statusText.gameObject.SetActive(false); } public void AddToList(SessionInfo sessionInfo, Action onJoinCallback) { var item = Instantiate(sessionItemListPrefab, verticalLayoutGroup.transform) .GetComponent(); item.SetSessionInfo(sessionInfo); item.OnJoinSession += onJoinCallback; activeItems.Add((item, onJoinCallback)); // store pair for clean removal } public void ShowNoSessionsMessage(string message = "No Game Sessions Found") { statusText.text = message; statusText.gameObject.SetActive(true); } }