< Summary

Class:DCL.MyAccount.EmailNotificationsComponentView
Assembly:MyAccountHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/MyAccountHUD/EmailNotificationsComponentView.cs
Covered lines:0
Uncovered lines:50
Coverable lines:50
Total lines:121
Line coverage:0% (0 of 50)
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
Awake()0%2100%
RefreshControl()0%2100%
SetLoadingActive(...)0%2100%
SetEmail(...)0%2100%
SetStatusAsPending(...)0%2100%
SetEmailFormValid(...)0%2100%
ResetForm()0%2100%
SetEmailInputInteractable(...)0%2100%
SetEmailUpdateLoadingActive(...)0%2100%
Show(...)0%2100%
Hide(...)0%2100%
OnPointerClick(...)0%20400%
Dispose()0%2100%
OnEmailTextChanged(...)0%6200%
OnEmailTextSubmitted(...)0%6200%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/MyAccountHUD/EmailNotificationsComponentView.cs

#LineLine coverage
 1using System;
 2using TMPro;
 3using UnityEngine;
 4using UnityEngine.EventSystems;
 5
 6namespace DCL.MyAccount
 7{
 8    public class EmailNotificationsComponentView : BaseComponentView, IEmailNotificationsComponentView, IPointerClickHan
 9    {
 10        [SerializeField] internal GameObject mainContainer;
 11        [SerializeField] internal GameObject loadingContainer;
 12        [SerializeField] internal TMP_InputField emailInputField;
 13        [SerializeField] internal GameObject emailEditionLogoContainer;
 14        [SerializeField] internal GameObject emailEditionLogo;
 15        [SerializeField] internal GameObject emailEditionLoadingSpinner;
 16        [SerializeField] internal GameObject emailInputFieldInvalid;
 17        [SerializeField] internal GameObject emailInputFieldEditing;
 18        [SerializeField] internal GameObject emailInputInvalidLabel;
 19        [SerializeField] internal GameObject pendingStatusWarning;
 20        [SerializeField] internal TMP_Text pendingStatusWarningText;
 21        [SerializeField] internal Sprite deleteEmailSprite;
 22        [SerializeField] internal Sprite updateEmailSprite;
 23
 24        public event Action<string> OnEmailEdited;
 25        public event Action<string> OnEmailSubmitted;
 26        public event Action OnReSendConfirmationEmailClicked;
 27
 028        public Sprite deleteEmailLogo => deleteEmailSprite;
 029        public Sprite updateEmailLogo => updateEmailSprite;
 30
 31        public override void Awake()
 32        {
 033            base.Awake();
 34
 035            emailInputField.onValueChanged.AddListener(OnEmailTextChanged);
 036            emailInputField.onSelect.AddListener(_ =>
 37            {
 038                emailEditionLogo.SetActive(false);
 039                emailInputFieldEditing.SetActive(true);
 040            });
 041            emailInputField.onDeselect.AddListener(OnEmailTextSubmitted);
 042            emailInputField.onSubmit.AddListener(OnEmailTextSubmitted);
 043        }
 44
 045        public override void RefreshControl() { }
 46
 47        public void SetLoadingActive(bool isActive)
 48        {
 049            loadingContainer.SetActive(isActive);
 050            mainContainer.SetActive(!isActive);
 051        }
 52
 53        public void SetEmail(string email) =>
 054            emailInputField.text = email;
 55
 56        public void SetStatusAsPending(bool isPending) =>
 057            pendingStatusWarning.SetActive(isPending);
 58
 59        public void SetEmailFormValid(bool isValid)
 60        {
 061            emailInputFieldInvalid.SetActive(!isValid);
 062            emailInputInvalidLabel.SetActive(!isValid);
 063        }
 64
 65        public void ResetForm()
 66        {
 067            emailEditionLogo.SetActive(true);
 068            emailInputFieldEditing.SetActive(false);
 069            emailInputFieldInvalid.SetActive(false);
 070            emailInputInvalidLabel.SetActive(false);
 071            SetStatusAsPending(false);
 072        }
 73
 74        public void SetEmailInputInteractable(bool isInteractable) =>
 075            emailInputField.interactable = isInteractable;
 76
 77        public void SetEmailUpdateLoadingActive(bool isActive)
 78        {
 079            emailEditionLogoContainer.SetActive(!isActive);
 080            emailEditionLoadingSpinner.SetActive(isActive);
 081        }
 82
 83        public override void Show(bool instant = false) =>
 084            gameObject.SetActive(true);
 85
 86        public override void Hide(bool instant = false) =>
 087            gameObject.SetActive(false);
 88
 89        public void OnPointerClick(PointerEventData eventData)
 90        {
 091            int linkIndex = TMP_TextUtilities.FindIntersectingLink(pendingStatusWarningText, Input.mousePosition, null);
 092            if (linkIndex == -1)
 093                return;
 94
 095            TMP_LinkInfo linkInfo = pendingStatusWarningText.textInfo.linkInfo[linkIndex];
 096            if (linkInfo.GetLinkID() == "reSendConfirmationEmail")
 097                OnReSendConfirmationEmailClicked?.Invoke();
 098        }
 99
 100        public override void Dispose()
 101        {
 0102            emailInputField.onValueChanged.RemoveAllListeners();
 0103            emailInputField.onDeselect.RemoveAllListeners();
 0104            emailInputField.onSubmit.RemoveAllListeners();
 105
 0106            base.Dispose();
 0107        }
 108
 109        private void OnEmailTextChanged(string newName)
 110        {
 0111            OnEmailEdited?.Invoke(newName);
 0112        }
 113
 114        private void OnEmailTextSubmitted(string newName)
 115        {
 0116            emailEditionLogo.SetActive(true);
 0117            emailInputFieldEditing.SetActive(false);
 0118            OnEmailSubmitted?.Invoke(newName);
 0119        }
 120    }
 121}