< 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:72
Uncovered lines:19
Coverable lines:91
Total lines:206
Line coverage:79.1% (72 of 91)
Covered branches:0
Total branches:0

Metrics

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

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() =>
 1343            Instantiate(
 44                Resources.Load<ReceivedFriendRequestHUDComponentView>("FriendRequests/ReceivedFriendRequestHUD"));
 45
 46        public override void Awake()
 47        {
 1348            base.Awake();
 49
 7850            foreach (var button in closeButtons)
 2851                button.onClick.AddListener(() => OnClose?.Invoke());
 52
 1453            openPassportButton.onClick.AddListener(() => OnOpenProfile?.Invoke());
 54
 1355            rejectButton.onClick.AddListener(() =>
 56            {
 157                lastTryWasConfirm = false;
 158                OnRejectFriendRequest?.Invoke();
 159            });
 60
 1361            confirmButton.onClick.AddListener(() =>
 62            {
 163                lastTryWasConfirm = true;
 164                OnConfirmFriendRequest?.Invoke();
 165            });
 1366        }
 67
 68        public override void Dispose()
 69        {
 2670            base.Dispose();
 71
 15672            foreach (var button in closeButtons)
 5273                button.onClick.RemoveAllListeners();
 74
 2675            openPassportButton.onClick.RemoveAllListeners();
 2676            rejectButton.onClick.RemoveAllListeners();
 2677            confirmButton.onClick.RemoveAllListeners();
 2678        }
 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        {
 195            model.BodyMessage = messageBody;
 196            bodyMessageInput.text = !string.IsNullOrEmpty(model.UserName)
 97                ? $"<b>{model.UserName}:</b> {messageBody}"
 98                : messageBody;
 199            bodyMessageContainer.SetActive(!string.IsNullOrEmpty(messageBody));
 1100        }
 101
 102        public void SetTimestamp(DateTime timestamp)
 103        {
 1104            model.RequestDate = timestamp;
 1105            dateLabel.text = timestamp.Date.ToString("MMM dd", new CultureInfo("en-US")).ToUpper();
 1106        }
 107
 108        public void SetSenderName(string userName)
 109        {
 1110            model.UserName = userName;
 1111            nameLabel.text = userName;
 1112            rejectSuccessLabel.text = $"{userName} request rejected!";
 1113            confirmSuccessLabel.text = $"{userName} and you are friends now!";
 114
 1115            if (!string.IsNullOrEmpty(model.BodyMessage))
 1116                bodyMessageInput.text = $"<b>{model.UserName}:</b> {model.BodyMessage}";
 1117        }
 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        {
 5135            model.State = state;
 136
 137            switch (state)
 138            {
 139                case ReceivedFriendRequestHUDModel.LayoutState.Default:
 2140                    SetDefaultState();
 2141                    break;
 142                case ReceivedFriendRequestHUDModel.LayoutState.Pending:
 1143                    SetPendingState();
 1144                    break;
 145                case ReceivedFriendRequestHUDModel.LayoutState.ConfirmSuccess:
 1146                    SetConfirmSuccessState();
 1147                    break;
 148                case ReceivedFriendRequestHUDModel.LayoutState.RejectSuccess:
 1149                    SetRejectSuccessState();
 150                    break;
 151                default:
 152                    break;
 153            }
 1154        }
 155
 156        public override void Show(bool instant = false)
 157        {
 1158            SetState(ReceivedFriendRequestHUDModel.LayoutState.Default);
 1159            base.Show(instant);
 1160        }
 161
 0162        public void Close() => base.Hide();
 163
 0164        public void SetSortingOrder(int sortingOrder) => currentCanvas.sortingOrder = sortingOrder;
 165
 166        private void SetDefaultState()
 167        {
 2168            showHideAnimatorForDefaultState.Show();
 2169            showHideAnimatorForRejectSuccessState.Hide(true);
 2170            showHideAnimatorForConfirmSuccessState.Hide(true);
 171
 2172            confirmButton.gameObject.SetActive(true);
 2173            pendingToConfirmContainer.SetActive(false);
 2174            rejectButton.gameObject.SetActive(true);
 2175            pendingToRejectContainer.SetActive(false);
 176
 20177            foreach (var button in buttonsToDisableOnPendingState)
 8178                button.interactable = true;
 2179        }
 180
 181        private void SetPendingState()
 182        {
 1183            confirmButton.gameObject.SetActive(!lastTryWasConfirm);
 1184            pendingToConfirmContainer.SetActive(lastTryWasConfirm);
 1185            rejectButton.gameObject.SetActive(lastTryWasConfirm);
 1186            pendingToRejectContainer.SetActive(!lastTryWasConfirm);
 187
 10188            foreach (var button in buttonsToDisableOnPendingState)
 4189                button.interactable = false;
 1190        }
 191
 192        private void SetConfirmSuccessState()
 193        {
 1194            showHideAnimatorForDefaultState.Hide();
 1195            showHideAnimatorForRejectSuccessState.Hide(true);
 1196            showHideAnimatorForConfirmSuccessState.Show();
 1197        }
 198
 199        private void SetRejectSuccessState()
 200        {
 1201            showHideAnimatorForDefaultState.Hide();
 1202            showHideAnimatorForRejectSuccessState.Show();
 1203            showHideAnimatorForConfirmSuccessState.Hide(true);
 1204        }
 205    }
 206}