Beispiel #1
0
        /// <summary>
        /// Show Reaction dialog when user long click on react button
        /// </summary>
        public void LongClickDialog(GlobalClickEventArgs postData, NativePostAdapter nativeFeedAdapter, string namePage = "")
        {
            try
            {
                PostData          = postData;
                NamePage          = namePage;
                NativeFeedAdapter = nativeFeedAdapter;

                //Show Dialog With 6 React
                AlertDialog.Builder dialogBuilder = new  AlertDialog.Builder(Context);

                //Irrelevant code for customizing the buttons and title
                LayoutInflater inflater   = (LayoutInflater)Context.GetSystemService(Context.LayoutInflaterService);
                View           dialogView = inflater.Inflate(Resource.Layout.XReactDialogLayout, null);

                InitializingReactImages(dialogView);
                SetReactionsArray();
                ResetReactionsIcons();
                ClickImageButtons();

                dialogBuilder.SetView(dialogView);
                MReactAlertDialog = dialogBuilder.Create();
                MReactAlertDialog.Window?.SetBackgroundDrawableResource(MReactDialogShape);

                Window window = MReactAlertDialog.Window;
                window?.SetLayout(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent);

                MReactAlertDialog.Show();
            }
            catch (Exception e)
            {
                Methods.DisplayReportResultTrack(e);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Method with 2 state set first React or back to default state
        /// </summary>
        public void ClickLikeAndDisLike(GlobalClickEventArgs postData, NativePostAdapter nativeFeedAdapter, string namePage = "")
        {
            try
            {
                PostData          = postData;
                NamePage          = namePage;
                NativeFeedAdapter = nativeFeedAdapter;

                //Code When User Click On Button
                //If State is true , dislike The Button And Return To Default State

                if (!Methods.CheckConnectivity())
                {
                    Toast.MakeText(Application.Context, Application.Context.GetString(Resource.String.Lbl_CheckYourInternetConnection), ToastLength.Short)?.Show();
                    return;
                }

                if (UserDetails.SoundControl)
                {
                    Methods.AudioRecorderAndPlayer.PlayAudioFromAsset("reaction.mp3");
                }

                if (MCurrentReactState)
                {
                    PostData.NewsFeedClass.Reaction ??= new WoWonderClient.Classes.Posts.Reaction();

                    UpdateReactButtonByReaction(MDefaultReaction);

                    if (AppSettings.PostButton == PostButtonSystem.ReactionDefault || AppSettings.PostButton == PostButtonSystem.ReactionSubShine)
                    {
                        if (PostData.NewsFeedClass.Reaction != null)
                        {
                            if (PostData.NewsFeedClass.Reaction.Count > 0)
                            {
                                PostData.NewsFeedClass.Reaction.Count--;
                            }
                            else
                            {
                                PostData.NewsFeedClass.Reaction.Count = 0;
                            }

                            PostData.NewsFeedClass.Reaction.Type      = "";
                            PostData.NewsFeedClass.Reaction.IsReacted = false;
                        }
                    }
                    else
                    {
                        var x = Convert.ToInt32(PostData.NewsFeedClass.PostLikes);
                        if (x > 0)
                        {
                            x--;
                        }
                        else
                        {
                            x = 0;
                        }

                        PostData.NewsFeedClass.IsLiked   = false;
                        PostData.NewsFeedClass.PostLikes = Convert.ToString(x, CultureInfo.InvariantCulture);
                    }

                    if (NamePage == "ImagePostViewerActivity" || NamePage == "MultiImagesPostViewerActivity")
                    {
                        //var ImgLike = PostData.View?.FindViewById<ImageView>(Resource.Id.image_like1);
                        var likeCount = PostData.View?.FindViewById <TextView>(Resource.Id.LikeText1);
                        if (likeCount != null && !likeCount.Text.Contains("K") && !likeCount.Text.Contains("M"))
                        {
                            var x = Convert.ToInt32(likeCount.Text);
                            if (x > 0)
                            {
                                x--;
                            }
                            else
                            {
                                x = 0;
                            }

                            likeCount.Text = Convert.ToString(x, CultureInfo.InvariantCulture);
                        }
                    }
                    else
                    {
                        var dataGlobal = nativeFeedAdapter?.ListDiffer?.Where(a => a.PostData?.Id == PostData.NewsFeedClass.PostId).ToList();
                        if (dataGlobal?.Count > 0)
                        {
                            foreach (var dataClass in from dataClass in dataGlobal let index = nativeFeedAdapter.ListDiffer.IndexOf(dataClass) where index > -1 select dataClass)
                            {
                                dataClass.PostData = postData.NewsFeedClass;
                                if (AppSettings.PostButton == PostButtonSystem.ReactionDefault || AppSettings.PostButton == PostButtonSystem.ReactionSubShine)
                                {
                                    dataClass.PostData.PostLikes = PostData.NewsFeedClass.Reaction.Count.ToString();
                                }
                                else
                                {
                                    dataClass.PostData.PostLikes = PostData.NewsFeedClass.PostLikes;
                                }
                                nativeFeedAdapter.NotifyItemChanged(nativeFeedAdapter.ListDiffer.IndexOf(dataClass), "reaction");
                            }
                        }

                        var likeCount = PostData.View?.FindViewById <TextView>(Resource.Id.Likecount);
                        if (likeCount != null)
                        {
                            if (AppSettings.PostButton == PostButtonSystem.ReactionDefault || AppSettings.PostButton == PostButtonSystem.ReactionSubShine)
                            {
                                likeCount.Text = PostData.NewsFeedClass.Reaction.Count.ToString();
                            }
                            else
                            {
                                likeCount.Text = PostData.NewsFeedClass.PostLikes;
                            }
                        }
                    }

                    if (AppSettings.PostButton == PostButtonSystem.ReactionDefault || AppSettings.PostButton == PostButtonSystem.ReactionSubShine)
                    {
                        PollyController.RunRetryPolicyFunction(new List <Func <Task> > {
                            () => RequestsAsync.Global.Post_Actions(PostData.NewsFeedClass.PostId, "reaction")
                        });
                    }
                    else
                    {
                        PollyController.RunRetryPolicyFunction(new List <Func <Task> > {
                            () => RequestsAsync.Global.Post_Actions(PostData.NewsFeedClass.PostId, "like")
                        });
                    }
                }
                else
                {
                    UpdateReactButtonByReaction(MReactionPack[0]);

                    if (AppSettings.PostButton == PostButtonSystem.ReactionDefault || AppSettings.PostButton == PostButtonSystem.ReactionSubShine)
                    {
                        PostData.NewsFeedClass.Reaction ??= new WoWonderClient.Classes.Posts.Reaction();

                        if (PostData.NewsFeedClass.Reaction.IsReacted != null && !PostData.NewsFeedClass.Reaction.IsReacted.Value)
                        {
                            PostData.NewsFeedClass.Reaction.Count++;
                            PostData.NewsFeedClass.Reaction.Type      = "1";
                            PostData.NewsFeedClass.Reaction.IsReacted = true;
                        }
                    }
                    else
                    {
                        var x = Convert.ToInt32(PostData.NewsFeedClass.PostLikes);
                        x++;

                        PostData.NewsFeedClass.IsLiked   = true;
                        PostData.NewsFeedClass.PostLikes = Convert.ToString(x, CultureInfo.InvariantCulture);
                    }

                    if (NamePage == "ImagePostViewerActivity" || NamePage == "MultiImagesPostViewerActivity")
                    {
                        var likeCount = PostData.View?.FindViewById <TextView>(Resource.Id.LikeText1);

                        if (likeCount != null && !likeCount.Text.Contains("K") && !likeCount.Text.Contains("M"))
                        {
                            var x = Convert.ToInt32(likeCount.Text);
                            x++;

                            likeCount.Text = Convert.ToString(x, CultureInfo.InvariantCulture);
                        }
                    }
                    else
                    {
                        var dataGlobal = nativeFeedAdapter?.ListDiffer?.Where(a => a.PostData?.Id == PostData.NewsFeedClass.PostId).ToList();
                        if (dataGlobal?.Count > 0)
                        {
                            foreach (var dataClass in from dataClass in dataGlobal let index = nativeFeedAdapter.ListDiffer.IndexOf(dataClass) where index > -1 select dataClass)
                            {
                                dataClass.PostData = postData.NewsFeedClass;
                                if (AppSettings.PostButton == PostButtonSystem.ReactionDefault || AppSettings.PostButton == PostButtonSystem.ReactionSubShine)
                                {
                                    dataClass.PostData.PostLikes = PostData.NewsFeedClass.Reaction.Count.ToString();
                                }
                                else
                                {
                                    dataClass.PostData.PostLikes = PostData.NewsFeedClass.PostLikes;
                                }
                                nativeFeedAdapter.NotifyItemChanged(nativeFeedAdapter.ListDiffer.IndexOf(dataClass), "reaction");
                            }
                        }

                        var likeCount = PostData.View?.FindViewById <TextView>(Resource.Id.Likecount);
                        if (likeCount != null)
                        {
                            if (AppSettings.PostButton == PostButtonSystem.ReactionDefault || AppSettings.PostButton == PostButtonSystem.ReactionSubShine)
                            {
                                likeCount.Text = PostData.NewsFeedClass.Reaction.Count.ToString();
                            }
                            else
                            {
                                likeCount.Text = PostData.NewsFeedClass.PostLikes;
                            }
                        }
                    }

                    if (AppSettings.PostButton == PostButtonSystem.ReactionDefault || AppSettings.PostButton == PostButtonSystem.ReactionSubShine)
                    {
                        string like = ListUtils.SettingsSiteList?.PostReactionsTypes?.FirstOrDefault(a => a.Value?.Name == "Like").Value?.Id ?? "1";
                        PollyController.RunRetryPolicyFunction(new List <Func <Task> > {
                            () => RequestsAsync.Global.Post_Actions(PostData.NewsFeedClass.PostId, "reaction", like)
                        });
                    }
                    else
                    {
                        PollyController.RunRetryPolicyFunction(new List <Func <Task> > {
                            () => RequestsAsync.Global.Post_Actions(PostData.NewsFeedClass.PostId, "like")
                        });
                    }
                }
            }
            catch (Exception e)
            {
                Methods.DisplayReportResultTrack(e);
            }
        }