Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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";
            }
        }