Esempio n. 1
0
        public static void UpdateOneMessage(ChatMessagesDataObject messages)
        {
            try
            {
                var checker = MAdapter.MessageList.FirstOrDefault(a => a.Id == messages.Id);
                if (checker != null)
                {
                    checker.Id             = messages.Id;
                    checker.FromId         = messages.FromId;
                    checker.ToId           = messages.ToId;
                    checker.Text           = messages.Text;
                    checker.Seen           = messages.Seen;
                    checker.Time           = messages.Time;
                    checker.FromDeleted    = messages.FromDeleted;
                    checker.ToDeleted      = messages.ToDeleted;
                    checker.SentPush       = messages.SentPush;
                    checker.NotificationId = messages.NotificationId;
                    checker.TypeTwo        = messages.TypeTwo;
                    checker.Image          = messages.Image;
                    checker.FullImage      = messages.FullImage;
                    checker.ApiPosition    = messages.ApiPosition;
                    checker.ApiType        = messages.ApiType;

                    MAdapter.NotifyItemChanged(MAdapter.MessageList.IndexOf(checker));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
        private void LoadTextOfChatItem(TextViewHolder holder, int position, ChatMessagesDataObject item)
        {
            try
            {
                Console.WriteLine(position);
                holder.Time.Text = Methods.Time.TimeAgo(Convert.ToInt32(item.Time));


                holder.TextSanitizerAutoLink.Load(Methods.FunString.DecodeString(item.Text), item.ApiPosition);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Esempio n. 3
0
        //Send Message type => "right_text"
        private void OnClick_OfSendButton()
        {
            try
            {
                var    unixTimestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
                string time2         = unixTimestamp.ToString(CultureInfo.InvariantCulture);

                if (string.IsNullOrEmpty(EmojisIconEditTextView.Text) || string.IsNullOrWhiteSpace(EmojisIconEditTextView.Text))
                {
                }
                else
                {
                    //Here on This function will send Text Messages to the user

                    //remove \n in a string
                    string replacement = Regex.Replace(EmojisIconEditTextView.Text, @"\t|\n|\r", "");

                    if (Methods.CheckConnectivity())
                    {
                        ChatMessagesDataObject message = new ChatMessagesDataObject
                        {
                            Id             = Convert.ToInt32(unixTimestamp),
                            FromId         = UserDetails.UserId,
                            ToId           = Userid,
                            Text           = replacement,
                            Seen           = 0,
                            Time           = unixTimestamp,
                            FromDeleted    = 0,
                            ToDeleted      = 0,
                            SentPush       = 0,
                            NotificationId = "",
                            TypeTwo        = "",
                            Image          = "",
                            FullImage      = "",
                            ApiPosition    = ApiPosition.Right,
                            ApiType        = ApiType.Text,
                            Hash           = time2
                        };

                        MAdapter.MessageList.Add(message);

                        int index = MAdapter.MessageList.IndexOf(MAdapter.MessageList.Last());
                        if (index > -1)
                        {
                            MAdapter.NotifyItemInserted(index);
                            //Scroll Down >>
                            ChatBoxRecyclerView.ScrollToPosition(index);
                        }

                        PollyController.RunRetryPolicyFunction(new List <Func <Task> > {
                            () => MessageController.SendMessageTask(Userid, EmojisIconEditTextView.Text, "", time2, UserInfoData)
                        });
                    }
                    else
                    {
                        Toast.MakeText(this, GetString(Resource.String.Lbl_CheckYourInternetConnection), ToastLength.Short);
                    }

                    EmojisIconEditTextView.Text = "";
                }

                ChatSendButton.Tag = "Text";
                ChatSendButton.SetImageResource(Resource.Drawable.SendLetter);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Esempio n. 4
0
        //Result
        protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            try
            {
                base.OnActivityResult(requestCode, resultCode, data);
                if (requestCode == 108 || requestCode == CropImage.CropImageActivityRequestCode)
                {
                    if (Methods.CheckConnectivity())
                    {
                        var result = CropImage.GetActivityResult(data);
                        if (result.IsSuccessful)
                        {
                            var resultPathImage = result.Uri.Path;
                            if (!string.IsNullOrEmpty(resultPathImage))
                            {
                                var    unixTimestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
                                string time2         = unixTimestamp.ToString(CultureInfo.InvariantCulture);

                                //Sent image
                                ChatMessagesDataObject message = new ChatMessagesDataObject
                                {
                                    Id             = Convert.ToInt32(unixTimestamp),
                                    FromId         = UserDetails.UserId,
                                    ToId           = Userid,
                                    Text           = "",
                                    Seen           = 0,
                                    Time           = unixTimestamp,
                                    FromDeleted    = 0,
                                    ToDeleted      = 0,
                                    SentPush       = 0,
                                    NotificationId = "",
                                    TypeTwo        = "",
                                    Image          = resultPathImage,
                                    FullImage      = "",
                                    ApiPosition    = ApiPosition.Right,
                                    ApiType        = ApiType.Image,
                                    Hash           = time2
                                };

                                MAdapter.MessageList.Add(message);

                                int index = MAdapter.MessageList.IndexOf(MAdapter.MessageList.Last());
                                if (index > -1)
                                {
                                    MAdapter.NotifyItemInserted(index);

                                    //Scroll Down >>
                                    ChatBoxRecyclerView.ScrollToPosition(index);
                                }

                                PollyController.RunRetryPolicyFunction(new List <Func <Task> > {
                                    () => MessageController.SendMessageTask(Userid, "", resultPathImage, time2, UserInfoData)
                                });

                                EmojisIconEditTextView.Text = "";
                            }
                        }
                        else
                        {
                            Toast.MakeText(this, GetText(Resource.String.Lbl_something_went_wrong), ToastLength.Long).Show();
                        }
                    }
                    else
                    {
                        Toast.MakeText(this, GetText(Resource.String.Lbl_CheckYourInternetConnection), ToastLength.Long).Show();
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
        public static void UpdateLastIdMessage(ChatMessagesDataObject messages, UserDataObject userData)
        {
            try
            {
                var checker = MessagesBoxActivity.MAdapter.MessageList.FirstOrDefault(a => a.Id == Convert.ToInt32(messages.Hash));
                if (checker != null)
                {
                    checker.Id             = messages.Id;
                    checker.Id             = messages.Id;
                    checker.FromId         = messages.FromId;
                    checker.ToId           = messages.ToId;
                    checker.Text           = messages.Text;
                    checker.Seen           = messages.Seen;
                    checker.Time           = messages.Time;
                    checker.FromDeleted    = messages.FromDeleted;
                    checker.ToDeleted      = messages.ToDeleted;
                    checker.SentPush       = messages.SentPush;
                    checker.NotificationId = messages.NotificationId;
                    checker.TypeTwo        = messages.TypeTwo;
                    checker.Image          = messages.Image;
                    checker.FullImage      = messages.FullImage;
                    checker.ApiPosition    = messages.ApiPosition;
                    checker.ApiType        = messages.ApiType;

                    var dataUser = LastChatActivity.MAdapter?.UserList?.FirstOrDefault(a => a.User.Id == messages.ToId);
                    if (dataUser != null)
                    {
                        var index = LastChatActivity.MAdapter?.UserList?.IndexOf(LastChatActivity.MAdapter.UserList?.FirstOrDefault(x => x.User.Id == messages.ToId));
                        if (index > -1)
                        {
                            LastChatActivity.MAdapter?.UserList?.Move(Convert.ToInt32(index), 0);
                            LastChatActivity.MAdapter?.NotifyItemMoved(Convert.ToInt32(index), 0);

                            var data = LastChatActivity.MAdapter?.UserList?.FirstOrDefault(a => a.User.Id == dataUser.User.Id);
                            if (data != null)
                            {
                                data.GetCountSeen   = 0;
                                data.User           = dataUser.User;
                                data.GetLastMessage = checker;

                                LastChatActivity.MAdapter.NotifyDataSetChanged();
                            }
                        }
                    }
                    else
                    {
                        if (userData != null)
                        {
                            LastChatActivity.MAdapter?.UserList?.Insert(0, new DataConversation()
                            {
                                GetCountSeen   = 0,
                                User           = userData,
                                GetLastMessage = checker,
                            });

                            LastChatActivity.MAdapter?.NotifyItemInserted(0);
                        }
                    }

                    SqLiteDatabase dbDatabase = new SqLiteDatabase();

                    //Update All data users to database
                    dbDatabase.InsertOrUpdateToOneMessages(checker);
                    dbDatabase.Dispose();

                    MessagesBoxActivity.UpdateOneMessage(checker);

                    if (AppSettings.RunSoundControl)
                    {
                        Methods.AudioRecorderAndPlayer.PlayAudioFromAsset("Popup_SendMesseges.mp3");
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
        private void LoadImageOfChatItem(ImageViewHolder holder, int position, ChatMessagesDataObject message)
        {
            try
            {
                Console.WriteLine(position);
                string imageUrl = message.Image.Contains("upload/chat/") && !message.Image.Contains(Client.WebsiteUrl) ? Client.WebsiteUrl + "/" + message.Image : message.Image;

                string fileSavedPath;

                holder.Time.Text = Methods.Time.TimeAgo(Convert.ToInt32(message.Time));

                if (imageUrl.Contains("http://") || imageUrl.Contains("https://"))
                {
                    var    fileName  = imageUrl.Split('/').Last();
                    string imageFile = Methods.MultiMedia.GetMediaFrom_Gallery(Methods.Path.FolderDcimImage, fileName);
                    if (imageFile == "File Dont Exists")
                    {
                        holder.LoadingProgressView.Indeterminate = false;
                        holder.LoadingProgressView.Visibility    = ViewStates.Visible;

                        string filePath  = Path.Combine(Methods.Path.FolderDcimImage);
                        string mediaFile = filePath + "/" + fileName;
                        fileSavedPath = mediaFile;

                        WebClient webClient = new WebClient();

                        webClient.DownloadDataAsync(new System.Uri(imageUrl));
                        //webClient.DownloadProgressChanged += (sender, args) =>
                        //{
                        //    var progress = args.ProgressPercentage;
                        //};

                        webClient.DownloadDataCompleted += (s, e) =>
                        {
                            try
                            {
                                if (!Directory.Exists(filePath))
                                {
                                    Directory.CreateDirectory(filePath);
                                }

                                File.WriteAllBytes(mediaFile, e.Result);

                                //var mediaScanIntent = new Intent(Intent.ActionMediaScannerScanFile);
                                //mediaScanIntent.SetData(Android.Net.Uri.FromFile(new Java.IO.File(mediaFile)));
                                //ActivityContext.SendBroadcast(mediaScanIntent);

                                // Tell the media scanner about the new file so that it is
                                // immediately available to the user.
                                MediaScannerConnection.ScanFile(Application.Context, new[] { mediaFile }, null, null);

                                var file = Uri.FromFile(new Java.IO.File(mediaFile));
                                Glide.With(ActivityContext).Load(file.Path).Apply(Options).Into(holder.ImageView);

                                holder.LoadingProgressView.Indeterminate = false;
                                holder.LoadingProgressView.Visibility    = ViewStates.Gone;
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex);
                            }
                        };
                    }
                    else
                    {
                        fileSavedPath = imageFile;

                        var file = Uri.FromFile(new Java.IO.File(imageFile));
                        Glide.With(ActivityContext).Load(file.Path).Apply(Options).Into(holder.ImageView);

                        holder.LoadingProgressView.Indeterminate = false;
                        holder.LoadingProgressView.Visibility    = ViewStates.Gone;
                    }
                }
                else
                {
                    fileSavedPath = imageUrl;

                    var file = Uri.FromFile(new Java.IO.File(imageUrl));
                    Glide.With(ActivityContext).Load(file.Path).Apply(Options).Into(holder.ImageView);

                    //GlideImageLoader.LoadImage(ActivityContext, imageUrl, holder.ImageView, ImageStyle.CenterCrop, ImagePlaceholders.Drawable);

                    holder.LoadingProgressView.Indeterminate = false;
                    holder.LoadingProgressView.Visibility    = ViewStates.Gone;
                }

                if (!holder.ImageView.HasOnClickListeners)
                {
                    holder.ImageView.Click += (sender, args) =>
                    {
                        try
                        {
                            string imageFile = Methods.MultiMedia.CheckFileIfExits(fileSavedPath);
                            if (imageFile != "File Dont Exists")
                            {
                                Java.IO.File file2    = new Java.IO.File(fileSavedPath);
                                var          photoUri = FileProvider.GetUriForFile(ActivityContext, ActivityContext.PackageName + ".fileprovider", file2);
                                Intent       intent   = new Intent();
                                intent.SetAction(Intent.ActionView);
                                intent.AddFlags(ActivityFlags.GrantReadUriPermission);
                                intent.SetDataAndType(photoUri, "image/*");
                                ActivityContext.StartActivity(intent);
                            }
                            else
                            {
                                Intent intent = new Intent(Intent.ActionView, Uri.Parse(imageUrl));
                                ActivityContext.StartActivity(intent);
                            }
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e);
                        }
                    };
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }