public void GetMessages(bool forceReload, MessagesReceivedCallback success, NoConnectionCallback noconnection, MessageReceivingError failure) { if (m_CachedMessages == null || forceReload || IsTimeToReloadMessages() || !GetUserToShow().Equals(m_CachedMessageUser)) { m_LastRefresh = Time.time; StartCoroutine(GetMessagesCoroutine(success, noconnection, failure)); } else { if (success != null) { success(); } } }
public IEnumerator GetMessagesCoroutine(MessagesReceivedCallback success, NoConnectionCallback noconnection, MessageReceivingError failure) { bool hack = m_UserManager.CurrentHackedUser != null; UnityWebRequest request; if (hack) { WWWForm form = new WWWForm(); form.AddField("targetId", m_UserManager.CurrentHackedUser); request = UnityWebRequest.Get(Constants.serverAddress + "api/hack/messages/" + m_UserManager.CurrentHackedUser); } else { request = UnityWebRequest.Get(Constants.serverAddress + "api/messages"); } m_UserManager.SetCurrentUserAuthorization(request); yield return(request.SendWebRequest()); while (!request.isDone) { yield return(new WaitForEndOfFrame()); } if (request.isNetworkError) { Debug.Log("Network error: Cannot get messages: " + request.error + ", Code = " + request.responseCode); if (noconnection != null) { noconnection(); } } else if (request.isHttpError) { if (request.responseCode == 500) { Debug.Log("Http error: Database search failed: " + request.error + ", Code = " + request.responseCode); if (failure != null) { failure(); } } } else if (request.responseCode == 200) { // response contains the message //Debug.Log("Messages received: " + request.downloadHandler.text); Dictionary <string, MessageInfo> messageData = null; try { messageData = JsonConvert.DeserializeObject <Dictionary <string, MessageInfo> >(request.downloadHandler.text); } catch (Exception) { Debug.LogError("Error: cannot deserialize messages."); } if (messageData != null) { m_CachedMessages = new Dictionary <string, MessageInfo>(); foreach (MessageInfo m in messageData.Values) { if (m._id != null) { m_CachedMessages[m._id] = m; } } m_CachedMessageUser = GetUserToShow(); if (success != null) { success(); } } } }