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);
            }
        }
Beispiel #3
0
        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);
     }
 }
Beispiel #7
0
 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);
            }
        }
Beispiel #9
0
        //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);
            }
        }
Beispiel #10
0
        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);
            }
        }
Beispiel #11
0
        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);
            }
        }