private async void MessageUpdater() { try { if (TaskWork == "Working") { TaskWork = "Stop"; if (!Methods.CheckConnectivity()) { SwipeRefreshLayout.Refreshing = false; Toast.MakeText(this, Resource.String.Lbl_CheckYourInternetConnection, ToastLength.Long).Show(); } else { int countList = MAdapter.MessageList.Count; string afterId = MAdapter.MessageList.LastOrDefault()?.Id ?? ""; var(apiStatus, respond) = await RequestsAsync.Messages.GetUserMessages(Userid, "30", "", afterId); if (apiStatus == 200) { if (respond is GetUserMessagesObject result) { int responseList = result.data.Messages.Count; if (responseList > 0) { if (countList > 0) { foreach (var item in result.data.Messages) { var check = MAdapter.MessageList.FirstOrDefault(a => a.Id == item.Id); if (check == null) { MAdapter.Add(item); } } } else { MAdapter.MessageList = new ObservableCollection <GetUserMessagesObject.Message>(result.data.Messages); } RunOnUiThread(() => { try { var lastCountItem = MAdapter.ItemCount; if (countList > 0) { MAdapter.NotifyItemRangeInserted(lastCountItem, MAdapter.MessageList.Count - 1); } else { MAdapter.NotifyDataSetChanged(); } //Insert to DataBase SqLiteDatabase dbDatabase = new SqLiteDatabase(); dbDatabase.InsertOrReplaceMessages(MAdapter.MessageList); dbDatabase.Dispose(); //Scroll Down >> ChatBoxRecylerView.ScrollToPosition(MAdapter.MessageList.Count - 1); var lastMessage = MAdapter.MessageList.LastOrDefault(); if (lastMessage != null) { var dataUser = LastChatActivity.MAdapter?.UserList?.FirstOrDefault(a => a.User.Id == lastMessage.FromId); if (dataUser != null) { dataUser.GetLastMessage.Text = lastMessage.Text; LastChatActivity.MAdapter.Move(dataUser); LastChatActivity.MAdapter.Update(dataUser); } if (AppSettings.RunSoundControl) { Methods.AudioRecorderAndPlayer.PlayAudioFromAsset("Popup_GetMesseges.mp3"); } } } catch (Exception e) { Console.WriteLine(e); } }); } } } else { Methods.DisplayReportResult(this, respond); } } TaskWork = "Working"; } } catch (Exception e) { Console.WriteLine(e); } }
private async void MessageUpdater() { try { if (TaskWork == "Working") { TaskWork = "Stop"; if (!Methods.CheckConnectivity()) { SwipeRefreshLayout.Refreshing = false; Toast.MakeText(this, GetString(Resource.String.Lbl_CheckYourInternetConnection), ToastLength.Short); } else { int countList = MAdapter.MessageList.Count; string afterId = MAdapter.MessageList.LastOrDefault()?.Id.ToString() ?? ""; var(apiStatus, respond) = await RequestsAsync.Chat.GetChatConversationsAsync(Userid.ToString(), "30", afterId); if (apiStatus == 200) { if (respond is GetChatConversationsObject result) { int responseList = result.Data.Count; if (responseList > 0) { if (countList > 0) { foreach (var item in from item in result.Data let check = MAdapter.MessageList.FirstOrDefault(a => a.Id == item.Id) where check == null select item) { MAdapter.MessageList.Add(item); int index = MAdapter.MessageList.IndexOf(item); if (index > -1) { RunOnUiThread(() => { try { MAdapter.NotifyItemInserted(index); //Scroll Down >> ChatBoxRecyclerView.ScrollToPosition(MAdapter.MessageList.Count - 1); } catch (Exception ee) { Console.WriteLine(ee); } }); } } } else { MAdapter.MessageList = new ObservableCollection <ChatMessagesDataObject>(result.Data); } RunOnUiThread(() => { try { var lastCountItem = MAdapter.ItemCount; if (countList > 0) { MAdapter.NotifyItemRangeInserted(lastCountItem, MAdapter.MessageList.Count - 1); } else { MAdapter.NotifyDataSetChanged(); } //Insert to DataBase SqLiteDatabase dbDatabase = new SqLiteDatabase(); dbDatabase.InsertOrReplaceMessages(MAdapter.MessageList); dbDatabase.Dispose(); //Scroll Down >> ChatBoxRecyclerView.ScrollToPosition(MAdapter.MessageList.Count - 1); var lastMessage = MAdapter.MessageList.LastOrDefault(); if (lastMessage != null) { var dataUser = LastChatActivity.MAdapter.UserList?.FirstOrDefault(a => a.User.Id == Userid); if (dataUser?.GetLastMessage != null) { dataUser.GetLastMessage.Value.GetLastMessageClass.Text = lastMessage.Text; int index = LastChatActivity.MAdapter.UserList.IndexOf(dataUser); LastChatActivity.MAdapter.UserList.Move(index, 0); LastChatActivity.MAdapter.NotifyItemMoved(index, 0); var data = LastChatActivity.MAdapter.UserList.FirstOrDefault(a => a.User.Id == dataUser.User.Id); if (data != null) { data.User = dataUser.User; data.GetCountSeen = dataUser.GetCountSeen; data.GetLastMessage = dataUser.GetLastMessage; data.ChatTime = dataUser.ChatTime; LastChatActivity.MAdapter.NotifyItemChanged(LastChatActivity.MAdapter.UserList.IndexOf(data)); } } } if (AppSettings.RunSoundControl) { Methods.AudioRecorderAndPlayer.PlayAudioFromAsset("Popup_GetMesseges.mp3"); } } catch (Exception e) { Console.WriteLine(e); } }); } } } else { Methods.DisplayReportResult(this, respond); } } TaskWork = "Working"; } } catch (Exception e) { Console.WriteLine(e); TaskWork = "Working"; } }