< Summary

Class:DCL.Social.Chat.PublicChatWindowComponentView
Assembly:WorldChatWindowHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/WorldChatWindowHUD/PublicChatWindowComponentView.cs
Covered lines:37
Uncovered lines:7
Coverable lines:44
Total lines:122
Line coverage:84% (37 of 44)
Covered branches:0
Total branches:0
Covered methods:11
Total methods:14
Method coverage:78.5% (11 of 14)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
add_OnFocused(...)0%110100%
remove_OnFocused(...)0%2100%
Awake()0%220100%
RefreshControl()0%110100%
Hide()0%110100%
Show()0%220100%
Configure(...)0%110100%
OnPointerDown(...)0%220100%
UpdateMembersCount(...)0%110100%
ToggleMembersSection()0%7.336066.67%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/WorldChatWindowHUD/PublicChatWindowComponentView.cs

#LineLine coverage
 1using DCL.Social.Chat;
 2using System;
 3using TMPro;
 4using UnityEngine;
 5using UnityEngine.EventSystems;
 6using UnityEngine.UI;
 7
 8namespace DCL.Social.Chat
 9{
 10    public class PublicChatWindowComponentView : BaseComponentView, IPublicChatWindowView, IComponentModelConfig<PublicC
 11    {
 12        private const int MEMBERS_SECTION_WIDTH = 280;
 13
 14        [SerializeField] internal Button closeButton;
 15        [SerializeField] internal Button backButton;
 16        [SerializeField] internal TMP_Text nameLabel;
 17        [SerializeField] internal ChatHUDView chatView;
 18        [SerializeField] internal PublicChatModel model;
 19        [SerializeField] internal ToggleComponentView muteToggle;
 20        [SerializeField] internal RectTransform collapsableArea;
 21        [SerializeField] internal ButtonComponentView expandMembersListButton;
 22        [SerializeField] internal ButtonComponentView collapseMembersListButton;
 23        [SerializeField] internal ChannelMembersComponentView membersList;
 24        [SerializeField] internal ButtonComponentView goToCrowdButton;
 25        [SerializeField] internal TMP_Text memberCountLabel;
 26        [SerializeField] internal Button membersIconButton;
 27
 28        private Coroutine alphaRoutine;
 29
 30        public event Action OnClose;
 31        public event Action OnBack;
 32        public event Action<bool> OnFocused
 33        {
 234            add => onFocused += value;
 035            remove => onFocused -= value;
 36        }
 37        public event Action OnClickOverWindow;
 38        public event Action<bool> OnMuteChanged;
 39        public event Action OnShowMembersList;
 40        public event Action OnHideMembersList;
 41        public event Action OnGoToCrowd;
 42
 043        public bool IsActive => gameObject.activeInHierarchy;
 344        public IChatHUDComponentView ChatHUD => chatView;
 045        public RectTransform Transform => (RectTransform) transform;
 146        public IChannelMembersComponentView ChannelMembersHUD => membersList;
 47
 48        private bool isMembersSectionOpen;
 49        private float collapsableAreaOriginalWidth;
 50        private Color targetGraphicColor;
 51
 52        public override void Awake()
 53        {
 1154            base.Awake();
 55
 1256            backButton.onClick.AddListener(() => OnBack?.Invoke());
 1257            closeButton.onClick.AddListener(() => OnClose?.Invoke());
 1158            muteToggle.OnSelectedChanged += (b, s, arg3) => OnMuteChanged?.Invoke(b);
 1159            expandMembersListButton.onClick.AddListener(ToggleMembersSection);
 1160            collapseMembersListButton.onClick.AddListener(ToggleMembersSection);
 1161            collapsableAreaOriginalWidth = collapsableArea.sizeDelta.x;
 1162            membersIconButton.onClick.AddListener(ToggleMembersSection);
 1163            targetGraphicColor = membersIconButton.targetGraphic.color;
 64
 1165            if (goToCrowdButton != null)
 1166                goToCrowdButton.onClick.AddListener(() => OnGoToCrowd?.Invoke());
 1167        }
 68
 69        public override void RefreshControl()
 70        {
 371            nameLabel.text = $"~{model.name}";
 372            memberCountLabel.text = model.memberCount.ToString();
 373            muteToggle.SetIsOnWithoutNotify(model.muted);
 374        }
 75
 276        public void Hide() => gameObject.SetActive(false);
 77
 78        public void Show()
 79        {
 380            gameObject.SetActive(true);
 81
 382            if (!isMembersSectionOpen)
 283                ToggleMembersSection();
 384        }
 85
 86        public void Configure(PublicChatModel model)
 87        {
 388            this.model = model;
 389            RefreshControl();
 390        }
 91
 192        public void OnPointerDown(PointerEventData eventData) => OnClickOverWindow?.Invoke();
 93
 94        public void UpdateMembersCount(int membersAmount) =>
 195            memberCountLabel.text = membersAmount.ToString();
 96
 97        private void ToggleMembersSection()
 98        {
 299            isMembersSectionOpen = !isMembersSectionOpen;
 100
 2101            expandMembersListButton.gameObject.SetActive(!isMembersSectionOpen);
 2102            collapseMembersListButton.gameObject.SetActive(isMembersSectionOpen);
 103
 2104            collapsableArea.SetSizeWithCurrentAnchors(
 105                RectTransform.Axis.Horizontal,
 106                isMembersSectionOpen ? collapsableAreaOriginalWidth + MEMBERS_SECTION_WIDTH : collapsableAreaOriginalWid
 107
 2108            if (isMembersSectionOpen)
 109            {
 2110                targetGraphicColor.a = 1f;
 2111                membersIconButton.targetGraphic.color = targetGraphicColor;
 2112                OnShowMembersList?.Invoke();
 113            }
 114            else
 115            {
 0116                targetGraphicColor.a = 0f;
 0117                membersIconButton.targetGraphic.color = targetGraphicColor;
 0118                OnHideMembersList?.Invoke();
 119            }
 0120        }
 121    }
 122}