public void MoreCommentReplyPostClick(CommentReplyMoviesClickEventArgs e) { try { if (Methods.CheckConnectivity()) { TypeDialog = "MoreComment"; CommentObject = e.CommentObject; var arrayAdapter = new List <string>(); var dialogList = new MaterialDialog.Builder(MainContext).Theme(AppSettings.SetTabDarkTheme ? Theme.Dark : Theme.Light); arrayAdapter.Add(MainContext.GetString(Resource.String.Lbl_CopeText)); if (CommentObject?.IsOwner != null && (bool)CommentObject?.IsOwner || CommentObject?.UserData?.UserId == UserDetails.UserId) { arrayAdapter.Add(MainContext.GetString(Resource.String.Lbl_Delete)); } dialogList.Title(MainContext.GetString(Resource.String.Lbl_More)); dialogList.Items(arrayAdapter); dialogList.PositiveText(MainContext.GetText(Resource.String.Lbl_Close)).OnNegative(this); dialogList.AlwaysCallSingleChoiceCallback(); dialogList.ItemsCallback(this).Build().Show(); } else { Toast.MakeText(MainContext, MainContext.GetText(Resource.String.Lbl_CheckYourInternetConnection), ToastLength.Short)?.Show(); } } catch (Exception exception) { Methods.DisplayReportResultTrack(exception); } }
//Event Menu >> Delete Comment private void DeleteCommentEvent(CommentsMoviesObject item) { try { if (!Methods.CheckConnectivity()) { Toast.MakeText(MainContext, MainContext.GetText(Resource.String.Lbl_CheckYourInternetConnection), ToastLength.Short)?.Show(); return; } TypeDialog = "DeleteComment"; CommentObject = item; var dialog = new MaterialDialog.Builder(MainContext).Theme(AppSettings.SetTabDarkTheme ? Theme.Dark : Theme.Light); dialog.Title(MainContext.GetText(Resource.String.Lbl_DeleteComment)); dialog.Content(MainContext.GetText(Resource.String.Lbl_AreYouSureDeleteComment)); dialog.PositiveText(MainContext.GetText(Resource.String.Lbl_Yes)).OnPositive(this); dialog.NegativeText(MainContext.GetText(Resource.String.Lbl_No)).OnNegative(this); dialog.AlwaysCallSingleChoiceCallback(); dialog.ItemsCallback(this).Build().Show(); } catch (Exception e) { Methods.DisplayReportResultTrack(e); } }
public override void SetupDialog(Dialog dialog, int style) { try { base.SetupDialog(dialog, style); View contentView = View.Inflate(Context, Resource.Layout.BottomSheetReplyCommentLayout, null); dialog.SetContentView(contentView); var parameters = (CoordinatorLayout.LayoutParams)((View)contentView.Parent).LayoutParameters; var behavior = parameters.Behavior; if (behavior != null && behavior.GetType() == typeof(BottomSheetBehavior)) { ((BottomSheetBehavior)behavior).SetBottomSheetCallback(MBottomSheetBehaviorCallback); } Type = Arguments.GetString("Type"); IdComment = Arguments.GetString("Id"); switch (Type) { case "Article": { if (Arguments.ContainsKey("Object")) { ArticlesObject = JsonConvert.DeserializeObject <CommentsArticlesObject>(Arguments.GetString("Object")); } break; } case "Movies": { if (Arguments.ContainsKey("Object")) { MoviesObject = JsonConvert.DeserializeObject <CommentsMoviesObject>(Arguments.GetString("Object")); } break; } } InitComponent(contentView); SetRecyclerViewAdapters(); switch (Type) { case "Article": LoadCommentArticle(); break; case "Movies": LoadCommentMovies(); break; } } catch (Exception e) { Console.WriteLine(e); } }
protected override void OnCreate(Bundle savedInstanceState) { try { base.OnCreate(savedInstanceState); Window?.SetSoftInputMode(SoftInput.AdjustResize); SetTheme(AppSettings.SetTabDarkTheme ? Resource.Style.MyTheme_Dark_Base : Resource.Style.MyTheme_Base); Methods.App.FullScreenApp(this); // Create your application here SetContentView(Resource.Layout.Native_Reply_Comment_Layout); Instance = this; Type = Intent?.GetStringExtra("Type") ?? ""; IdComment = Intent?.GetStringExtra("Id") ?? ""; switch (Type) { case "Article": { ArticlesObject = JsonConvert.DeserializeObject <CommentsArticlesObject>(Intent?.GetStringExtra("Object") ?? ""); break; } case "Movies": { MoviesObject = JsonConvert.DeserializeObject <CommentsMoviesObject>(Intent?.GetStringExtra("Object") ?? ""); break; } } InitComponent(); SetRecyclerViewAdapters(); switch (Type) { case "Article": LoadCommentArticle(); break; case "Movies": LoadCommentMovies(); break; } AdsGoogle.Ad_Interstitial(this); } catch (Exception e) { Methods.DisplayReportResultTrack(e); } }
public override void SetupDialog(Dialog dialog, int style) { try { base.SetupDialog(dialog, style); View contentView = View.Inflate(Context, Resource.Layout.BottomSheetReplyCommentLayout, null); dialog.SetContentView(contentView); var parameters = (CoordinatorLayout.LayoutParams)((View)contentView.Parent).LayoutParameters; Type = Arguments.GetString("Type"); IdComment = Arguments.GetString("Id"); switch (Type) { case "Article": { if (Arguments.ContainsKey("Object")) { ArticlesObject = JsonConvert.DeserializeObject <CommentsArticlesObject>(Arguments.GetString("Object")); } break; } case "Movies": { if (Arguments.ContainsKey("Object")) { MoviesObject = JsonConvert.DeserializeObject <CommentsMoviesObject>(Arguments.GetString("Object")); } break; } } InitComponent(contentView); SetRecyclerViewAdapters(); switch (Type) { case "Article": LoadCommentArticle(); break; case "Movies": LoadCommentMovies(); break; } } catch (Exception e) { Methods.DisplayReportResultTrack(e); } }
public void ReplyOnReplyClick(CommentsMoviesObject item) { try { if (ReplyFragment == null) { return; } ReplyFragment.TxtComment.Text = ""; ReplyFragment.TxtComment.Text = "@" + item.UserData.Username + " "; } catch (Exception exception) { Console.WriteLine(exception); } }
public void ReplyOnReplyClick(CommentsMoviesObject item) { try { if (ReplyFragment == null) { return; } ReplyFragment.TxtComment.Text = ""; ReplyFragment.TxtComment.Text = "@" + item.UserData.Username + " "; } catch (Exception exception) { Methods.DisplayReportResultTrack(exception); } }
//Event Menu >> Reply public void CommentReplyClick(CommentsMoviesObject item) { try { // show dialog : ReplyFragment = new ReplyCommentBottomSheet(); Bundle bundle = new Bundle(); bundle.PutString("Type", "Movies"); bundle.PutString("Id", MoviesId); bundle.PutString("Object", JsonConvert.SerializeObject(item)); ReplyFragment.Arguments = bundle; ReplyFragment.Show(SupportFragmentManager, ReplyFragment.Tag); } catch (Exception e) { Console.WriteLine(e); } }
//Api sent Comment Movies private async void ImgSentMoviesOnClick(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(TxtComment.Text)) { return; } if (Methods.CheckConnectivity()) { var dataUser = ListUtils.MyProfileList.FirstOrDefault(); //Comment Code var unixTimestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); CommentsMoviesObject comment = new CommentsMoviesObject { Id = unixTimestamp.ToString(), MovieId = MoviesObject.MovieId, UserId = UserDetails.UserId, Text = TxtComment.Text, Likes = "0", Posted = unixTimestamp.ToString(), UserData = dataUser, IsOwner = true, Dislikes = "0", IsCommentLiked = false, Replies = new List <CommentsMoviesObject>() }; MAdapterMovies.CommentList.Add(comment); var index = MAdapterMovies.CommentList.IndexOf(comment); if (index > -1) { MAdapterMovies.NotifyItemInserted(index); } MRecycler.Visibility = ViewStates.Visible; var dd = MAdapterMovies.CommentList.FirstOrDefault(); if (dd?.Text == MAdapterMovies.EmptyState) { MAdapterMovies.CommentList.Remove(dd); MAdapterMovies.NotifyItemRemoved(MAdapterMovies.CommentList.IndexOf(dd)); } var text = TxtComment.Text; //Hide keyboard TxtComment.Text = ""; (int apiStatus, var respond) = await RequestsAsync.Movies.CreateReply(MoviesObject.MovieId, IdComment, text); if (apiStatus == 200) { if (respond is GetCommentsMoviesObject result) { var date = MAdapterMovies.CommentList.FirstOrDefault(a => a.Id == comment.Id) ?? MAdapterMovies.CommentList.FirstOrDefault(x => x.Id == result.Data[0]?.Id); if (date != null) { date = result.Data[0]; date.Id = result.Data[0].Id; index = MAdapterMovies.CommentList.IndexOf(MAdapterMovies.CommentList.FirstOrDefault(a => a.Id == unixTimestamp.ToString())); if (index > -1) { MAdapterMovies.CommentList[index] = result.Data[0]; //MAdapter.NotifyItemChanged(index); MRecycler.ScrollToPosition(index); } } } } else { Methods.DisplayReportResult(Activity, respond); } //Hide keyboard TxtComment.Text = ""; } else { Toast.MakeText(Activity, Activity.GetText(Resource.String.Lbl_CheckYourInternetConnection), ToastLength.Short).Show(); } } catch (Exception exception) { Console.WriteLine(exception); } }
public async Task FetchMoviesApiReply(string commentId, string offset) { if (string.IsNullOrEmpty(commentId)) { return; } int countList = CommentList.Count; var(apiStatus, respond) = await RequestsAsync.Movies.GetReply(commentId, "25", offset); if (apiStatus == 200) { if (respond is GetCommentsMoviesObject result) { var respondList = result.Data?.Count; if (respondList > 0) { if (countList > 0) { foreach (var item in from item in result.Data let check = CommentList.FirstOrDefault(a => a.Id == item.Id) where check == null select item) { CommentList.Add(item); } ActivityContext.RunOnUiThread(() => { NotifyItemRangeInserted(countList, CommentList.Count - countList); }); } else { CommentList = new ObservableCollection <CommentsMoviesObject>(result.Data); ActivityContext.RunOnUiThread(NotifyDataSetChanged); } } } } else { Methods.DisplayReportResult(ActivityContext, respond); } MainScrollEvent.IsLoading = false; if (CommentList.Count > 0) { var emptyStateChecker = CommentList.FirstOrDefault(a => a.Text == EmptyState); if (emptyStateChecker != null && CommentList.Count > 1) { CommentList.Remove(emptyStateChecker); ActivityContext.RunOnUiThread(NotifyDataSetChanged); } } else { CommentList.Clear(); var d = new CommentsMoviesObject { Text = EmptyState }; CommentList.Add(d); ActivityContext.RunOnUiThread(NotifyDataSetChanged); } }
private static void LoadCommentData(CommentsMoviesObject item, RecyclerView.ViewHolder viewHolder, int position = 0) { try { if (!(viewHolder is MoviesCommentAdapterViewHolder holder)) { return; } if (AppSettings.FlowDirectionRightToLeft) { holder.BubbleLayout.LayoutDirection = LayoutDirection.Rtl; } if (string.IsNullOrEmpty(item.Text) || string.IsNullOrWhiteSpace(item.Text)) { holder.CommentText.Visibility = ViewStates.Gone; } else { var description = Methods.FunString.DecodeString(item.Text); var readMoreOption = new StReadMoreOption.Builder() .TextLength(250, StReadMoreOption.TypeCharacter) .MoreLabel(ActivityContext.GetText(Resource.String.Lbl_ReadMore)) .LessLabel(ActivityContext.GetText(Resource.String.Lbl_ReadLess)) .MoreLabelColor(Color.ParseColor(AppSettings.MainColor)) .LessLabelColor(Color.ParseColor(AppSettings.MainColor)) .LabelUnderLine(true) .Build(); readMoreOption.AddReadMoreTo(holder.CommentText, new Java.Lang.String(description)); } holder.TimeTextView.Text = Methods.Time.TimeAgo(Convert.ToInt32(item.Posted), false); holder.UserName.Text = item.UserData.Name; GlideImageLoader.LoadImage(ActivityContext, item.UserData.Avatar, holder.Image, ImageStyle.CircleCrop, ImagePlaceholders.Drawable); var textHighLighter = item.UserData.Name; var textIsPro = string.Empty; if (item.UserData.Verified == "1") { textHighLighter += " " + IonIconsFonts.CheckmarkCircle; } if (item.UserData.IsPro == "0") { textIsPro = " " + IonIconsFonts.Flash; textHighLighter += textIsPro; } var decorator = TextDecorator.Decorate(holder.UserName, textHighLighter).SetTextStyle((int)TypefaceStyle.Bold, 0, item.UserData.Name.Length); if (item.UserData.Verified == "1") { decorator.SetTextColor(Resource.Color.Post_IsVerified, IonIconsFonts.CheckmarkCircle); } if (item.UserData.IsPro == "1") { decorator.SetTextColor(Resource.Color.text_color_in_between, textIsPro); } decorator.Build(); if (item.Replies?.Count > 0) { holder.ReplyTextView.Text = ActivityContext.GetText(Resource.String.Lbl_Reply) + " " + "(" + item.Replies.Count + ")"; } if (item.IsCommentLiked) { holder.LikeTextView.Text = ActivityContext.GetText(Resource.String.Btn_Liked); holder.LikeTextView.SetTextColor(Color.ParseColor(AppSettings.MainColor)); holder.LikeTextView.Tag = "Liked"; } else { holder.LikeTextView.Text = ActivityContext.GetText(Resource.String.Btn_Like); holder.LikeTextView.SetTextColor(AppSettings.SetTabDarkTheme ? Color.ParseColor("#ffffff") : Color.ParseColor("#000000")); holder.LikeTextView.Tag = "Like"; } holder.TimeTextView.Tag = "true"; if (holder.Image.HasOnClickListeners) { return; } var postEventListener = new MoviesCommentClickListener(ActivityContext, Type); //Create an Event holder.MainView.LongClick += (sender, e) => postEventListener.MoreCommentReplyPostClick(new CommentReplyMoviesClickEventArgs { CommentObject = item, Position = position, View = holder.MainView }); holder.Image.Click += (sender, args) => postEventListener.ProfileClick(new CommentReplyMoviesClickEventArgs { Holder = holder, CommentObject = item, Position = position, View = holder.MainView }); switch (Type) { case "Comment": holder.ReplyTextView.Click += (sender, args) => VideoViewerActivity.GetInstance()?.CommentReplyClick(item); break; case "Reply": holder.ReplyTextView.Click += (sender, args) => VideoViewerActivity.GetInstance()?.ReplyOnReplyClick(item); break; } holder.LikeTextView.Click += delegate { try { if (!Methods.CheckConnectivity()) { Toast.MakeText(ActivityContext, ActivityContext.GetText(Resource.String.Lbl_CheckYourInternetConnection), ToastLength.Short)?.Show(); return; } if (holder.LikeTextView?.Tag?.ToString() == "Liked") { item.IsCommentLiked = false; holder.LikeTextView.Text = ActivityContext.GetText(Resource.String.Btn_Like); holder.LikeTextView.SetTextColor(AppSettings.SetTabDarkTheme ? Color.ParseColor("#ffffff") : Color.ParseColor("#000000")); holder.LikeTextView.Tag = "Like"; //sent api Dislike comment reply_like switch (Type) { case "Comment": PollyController.RunRetryPolicyFunction(new List <Func <Task> > { () => RequestsAsync.Movies.LikeUnLikeCommentAsync(item.MovieId, item.Id, false) }); break; case "Reply": PollyController.RunRetryPolicyFunction(new List <Func <Task> > { () => RequestsAsync.Movies.LikeUnLikeCommentAsync(item.MovieId, item.Id, false, "reply_like") }); break; } } else { item.IsCommentLiked = true; holder.LikeTextView.Text = ActivityContext.GetText(Resource.String.Btn_Liked); holder.LikeTextView.SetTextColor(Color.ParseColor(AppSettings.MainColor)); holder.LikeTextView.Tag = "Liked"; //sent api like comment switch (Type) { case "Comment": PollyController.RunRetryPolicyFunction(new List <Func <Task> > { () => RequestsAsync.Movies.LikeUnLikeCommentAsync(item.MovieId, item.Id, true) }); break; case "Reply": PollyController.RunRetryPolicyFunction(new List <Func <Task> > { () => RequestsAsync.Movies.LikeUnLikeCommentAsync(item.MovieId, item.Id, true, "reply_like") }); break; } } } catch (Exception e) { Methods.DisplayReportResultTrack(e); } }; } catch (Exception e) { Methods.DisplayReportResultTrack(e); } }