private void AddComment(Json.ChatDetails.SerializedItems serializedItems) { string channelId; string imageUrl; if (serializedItems.items == null) { return; } for (int i = 0; i < serializedItems.items.Length; i++) { channelId = serializedItems.items[i].authorDetails.channelId; imageUrl = serializedItems.items[i].authorDetails.profileImageUrl; if (!_listenersData.IsListenerDataExists(channelId)) { _listenersData.AddListenerData(new ListenerData(channelId, imageUrl, new AtlasManager.AtlasInfo())); StartCoroutine(CacheListenerProfileImage(channelId, imageUrl)); } else if (!_listenersData.IsListenerDataExists(channelId, imageUrl)) { StartCoroutine(CacheListenerProfileImage(channelId, imageUrl)); } _commentData.EnqueueComment(serializedItems.items[i]); } }
private void SetNextPageToken(Json.ChatDetails.SerializedItems serializedItems) { APIData.nextPageToken = serializedItems.nextPageToken; }
private IEnumerator GetChat() { if (APIData.chatId.Equals("")) { yield break; } if (!receiveChat) { Debug.Log("receive chat stopped"); yield break; } float waitSeconds = (float)TimeSpan.FromMilliseconds(pollingIntervalMillis).TotalSeconds; yield return(new WaitForSeconds(waitSeconds)); pollingIntervalMillis = 0; string chatURI = APIData.ChatURI(); if (Debug.isDebugBuild) { #if UNITY_EDITOR if (showDebugLog) { Debug.Log(chatURI); } #elif UNITY_STANDALONE Debug.Log(chatURI); #endif } UnityWebRequest webRequest = UnityWebRequest.Get(chatURI); yield return(webRequest.SendWebRequest()); string jsonText = webRequest.downloadHandler.text; Json.ChatDetails.SerializedItems serializedItems = JsonUtility.FromJson <Json.ChatDetails.SerializedItems> (jsonText); if (serializedItems.items != null) { if (serializedItems.items.Length == 0) { noItemsRespondCount++; if (noItemsRespondCount >= noItemsRespondLimit) { noItemsRespondCount = 0; currentCheckCoroutine = StartCoroutine(GetVideoDetails()); } } else { SetNextPageToken(serializedItems); pollingIntervalMillis = serializedItems.pollingIntervalMillis; AddComment(serializedItems); } } /* else if (serializedItems.error != null) { * ErrorDetails details = ErrorMessageResolver.FormatError (serializedItems.error); * if (details.reason.Equals (ErrorMessageResolver.Reason.liveChatEnded.ToString ())) { * Debug.Log ("LiveChatが終了したため、コメントの取得を停止しました。"); * ClearSettings (); * yield break; * } * } */ if (serializedItems.pollingIntervalMillis < defaultPollingIntervalMillis) { pollingIntervalMillis = defaultPollingIntervalMillis; } webRequest.Dispose(); if (liveStatus.liveBroadcastContent.Equals("none")) { StopReceiveProgress(); Debug.Log("Liveが終了しているため、コメントの取得を停止しました。"); yield break; } currentChatCoroutine = StartCoroutine(WaitForReceiveChat()); }