< Summary

Class:DCL.Social.Friends.ReceivedFriendRequestHUDComponentView
Assembly:FriendRequestHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/FriendRequestHUD/ReceivedFriendRequestHUDComponentView.cs
Covered lines:0
Uncovered lines:91
Coverable lines:91
Total lines:206
Line coverage:0% (0 of 91)
Covered branches:0
Total branches:0
Covered methods:0
Total methods:17
Method coverage:0% (0 of 17)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Create()0%2100%
Awake()0%6200%
Dispose()0%6200%
RefreshControl()0%6200%
SetBodyMessage(...)0%12300%
SetTimestamp(...)0%2100%
SetSenderName(...)0%6200%
SetSenderProfilePicture(...)0%2100%
SetRecipientProfilePicture(...)0%2100%
SetState(...)0%30500%
Show(...)0%2100%
Close()0%2100%
SetSortingOrder(...)0%2100%
SetDefaultState()0%6200%
SetPendingState()0%6200%
SetConfirmSuccessState()0%2100%
SetRejectSuccessState()0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/FriendRequestHUD/ReceivedFriendRequestHUDComponentView.cs

#LineLine coverage
 1using System;
 2using System.Globalization;
 3using TMPro;
 4using UIComponents.Scripts.Components;
 5using UnityEngine;
 6using UnityEngine.UI;
 7
 8namespace DCL.Social.Friends
 9{
 10    public class ReceivedFriendRequestHUDComponentView : BaseComponentView<ReceivedFriendRequestHUDModel>,
 11        IReceivedFriendRequestHUDView, IFriendRequestHUDView
 12    {
 13        [SerializeField] internal GameObject bodyMessageContainer;
 14        [SerializeField] internal TMP_InputField bodyMessageInput;
 15        [SerializeField] internal TMP_Text dateLabel;
 16        [SerializeField] internal TMP_Text nameLabel;
 17        [SerializeField] internal ImageComponentView otherProfileImageInConfirmDefaultState;
 18        [SerializeField] internal ImageComponentView otherProfileImageInConfirmSuccessState;
 19        [SerializeField] internal ImageComponentView otherProfileImageInConfirmRejectState;
 20        [SerializeField] internal ImageComponentView ownProfileImageInConfirmSuccessState;
 21        [SerializeField] internal Button[] closeButtons;
 22        [SerializeField] internal Button openPassportButton;
 23        [SerializeField] internal Button rejectButton;
 24        [SerializeField] internal GameObject pendingToRejectContainer;
 25        [SerializeField] internal Button confirmButton;
 26        [SerializeField] internal GameObject pendingToConfirmContainer;
 27        [SerializeField] internal ShowHideAnimator showHideAnimatorForDefaultState;
 28        [SerializeField] internal ShowHideAnimator showHideAnimatorForConfirmSuccessState;
 29        [SerializeField] internal ShowHideAnimator showHideAnimatorForRejectSuccessState;
 30        [SerializeField] internal Button[] buttonsToDisableOnPendingState;
 31        [SerializeField] internal TMP_Text rejectSuccessLabel;
 32        [SerializeField] internal TMP_Text confirmSuccessLabel;
 33        [SerializeField] internal Canvas currentCanvas;
 34
 35        public event Action OnClose;
 36        public event Action OnOpenProfile;
 37        public event Action OnRejectFriendRequest;
 38        public event Action OnConfirmFriendRequest;
 39
 40        private bool lastTryWasConfirm;
 41
 42        public static ReceivedFriendRequestHUDComponentView Create() =>
 043            Instantiate(
 44                Resources.Load<ReceivedFriendRequestHUDComponentView>("FriendRequests/ReceivedFriendRequestHUD"));
 45
 46        public override void Awake()
 47        {
 048            base.Awake();
 49
 050            foreach (var button in closeButtons)
 051                button.onClick.AddListener(() => OnClose?.Invoke());
 52
 053            openPassportButton.onClick.AddListener(() => OnOpenProfile?.Invoke());
 54
 055            rejectButton.onClick.AddListener(() =>
 56            {
 057                lastTryWasConfirm = false;
 058                OnRejectFriendRequest?.Invoke();
 059            });
 60
 061            confirmButton.onClick.AddListener(() =>
 62            {
 063                lastTryWasConfirm = true;
 064                OnConfirmFriendRequest?.Invoke();
 065            });
 066        }
 67
 68        public override void Dispose()
 69        {
 070            base.Dispose();
 71
 072            foreach (var button in closeButtons)
 073                button.onClick.RemoveAllListeners();
 74
 075            openPassportButton.onClick.RemoveAllListeners();
 076            rejectButton.onClick.RemoveAllListeners();
 077            confirmButton.onClick.RemoveAllListeners();
 078        }
 79
 80        public override void RefreshControl()
 81        {
 082            if (model == null)
 083                return;
 84
 085            SetBodyMessage(model.BodyMessage);
 086            SetTimestamp(model.RequestDate);
 087            SetSenderName(model.UserName);
 088            SetSenderProfilePicture(model.UserProfilePictureUri);
 089            SetRecipientProfilePicture(model.OwnProfilePictureUri);
 090            SetState(model.State);
 091        }
 92
 93        public void SetBodyMessage(string messageBody)
 94        {
 095            model.BodyMessage = messageBody;
 096            bodyMessageInput.text = !string.IsNullOrEmpty(model.UserName)
 97                ? $"<b>{model.UserName}:</b> {messageBody}"
 98                : messageBody;
 099            bodyMessageContainer.SetActive(!string.IsNullOrEmpty(messageBody));
 0100        }
 101
 102        public void SetTimestamp(DateTime timestamp)
 103        {
 0104            model.RequestDate = timestamp;
 0105            dateLabel.text = timestamp.Date.ToString("MMM dd", new CultureInfo("en-US")).ToUpper();
 0106        }
 107
 108        public void SetSenderName(string userName)
 109        {
 0110            model.UserName = userName;
 0111            nameLabel.text = userName;
 0112            rejectSuccessLabel.text = $"{userName} request rejected!";
 0113            confirmSuccessLabel.text = $"{userName} and you are friends now!";
 114
 0115            if (!string.IsNullOrEmpty(model.BodyMessage))
 0116                bodyMessageInput.text = $"<b>{model.UserName}:</b> {model.BodyMessage}";
 0117        }
 118
 119        public void SetSenderProfilePicture(string uri)
 120        {
 0121            model.UserProfilePictureUri = uri;
 0122            otherProfileImageInConfirmDefaultState.SetImage(uri);
 0123            otherProfileImageInConfirmSuccessState.SetImage(uri);
 0124            otherProfileImageInConfirmRejectState.SetImage(uri);
 0125        }
 126
 127        public void SetRecipientProfilePicture(string uri)
 128        {
 0129            model.OwnProfilePictureUri = uri;
 0130            ownProfileImageInConfirmSuccessState.SetImage(uri);
 0131        }
 132
 133        public void SetState(ReceivedFriendRequestHUDModel.LayoutState state)
 134        {
 0135            model.State = state;
 136
 137            switch (state)
 138            {
 139                case ReceivedFriendRequestHUDModel.LayoutState.Default:
 0140                    SetDefaultState();
 0141                    break;
 142                case ReceivedFriendRequestHUDModel.LayoutState.Pending:
 0143                    SetPendingState();
 0144                    break;
 145                case ReceivedFriendRequestHUDModel.LayoutState.ConfirmSuccess:
 0146                    SetConfirmSuccessState();
 0147                    break;
 148                case ReceivedFriendRequestHUDModel.LayoutState.RejectSuccess:
 0149                    SetRejectSuccessState();
 150                    break;
 151                default:
 152                    break;
 153            }
 0154        }
 155
 156        public override void Show(bool instant = false)
 157        {
 0158            SetState(ReceivedFriendRequestHUDModel.LayoutState.Default);
 0159            base.Show(instant);
 0160        }
 161
 0162        public void Close() => base.Hide();
 163
 0164        public void SetSortingOrder(int sortingOrder) => currentCanvas.sortingOrder = sortingOrder;
 165
 166        private void SetDefaultState()
 167        {
 0168            showHideAnimatorForDefaultState.Show();
 0169            showHideAnimatorForRejectSuccessState.Hide(true);
 0170            showHideAnimatorForConfirmSuccessState.Hide(true);
 171
 0172            confirmButton.gameObject.SetActive(true);
 0173            pendingToConfirmContainer.SetActive(false);
 0174            rejectButton.gameObject.SetActive(true);
 0175            pendingToRejectContainer.SetActive(false);
 176
 0177            foreach (var button in buttonsToDisableOnPendingState)
 0178                button.interactable = true;
 0179        }
 180
 181        private void SetPendingState()
 182        {
 0183            confirmButton.gameObject.SetActive(!lastTryWasConfirm);
 0184            pendingToConfirmContainer.SetActive(lastTryWasConfirm);
 0185            rejectButton.gameObject.SetActive(lastTryWasConfirm);
 0186            pendingToRejectContainer.SetActive(!lastTryWasConfirm);
 187
 0188            foreach (var button in buttonsToDisableOnPendingState)
 0189                button.interactable = false;
 0190        }
 191
 192        private void SetConfirmSuccessState()
 193        {
 0194            showHideAnimatorForDefaultState.Hide();
 0195            showHideAnimatorForRejectSuccessState.Hide(true);
 0196            showHideAnimatorForConfirmSuccessState.Show();
 0197        }
 198
 199        private void SetRejectSuccessState()
 200        {
 0201            showHideAnimatorForDefaultState.Hide();
 0202            showHideAnimatorForRejectSuccessState.Show();
 0203            showHideAnimatorForConfirmSuccessState.Hide(true);
 0204        }
 205    }
 206}