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); } }
//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); } }
//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); } }