< Summary

Class:DCL.Social.Chat.PublicChatEntry
Assembly:WorldChatWindowHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/WorldChatWindowHUD/PublicChatEntry.cs
Covered lines:33
Uncovered lines:0
Coverable lines:33
Total lines:86
Line coverage:100% (33 of 33)
Covered branches:0
Total branches:0
Covered methods:7
Total methods:7
Method coverage:100% (7 of 7)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
PublicChatEntry()0%110100%
Awake()0%440100%
Initialize(...)0%110100%
Configure(...)0%110100%
RefreshControl()0%990100%
Dock(...)0%110100%

File(s)

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

#LineLine coverage
 1using DCL.Social.Chat;
 2using System;
 3using TMPro;
 4using UnityEngine;
 5using UnityEngine.UI;
 6
 7namespace DCL.Social.Chat
 8{
 9    public class PublicChatEntry : BaseComponentView, IComponentModelConfig<PublicChatEntryModel>
 10    {
 11        [SerializeField] internal Button openChatButton;
 12        [SerializeField] internal TMP_Text nameLabel;
 13        [SerializeField] internal PublicChatEntryModel model;
 14        [SerializeField] internal UnreadNotificationBadge unreadNotifications;
 5715        [SerializeField] internal string namePrefix = "#";
 16        [SerializeField] internal TMP_Text memberCountLabel;
 17        [SerializeField] internal Button optionsButton;
 18        [SerializeField] internal Button leaveButton;
 19        [SerializeField] internal Button joinButton;
 20        [SerializeField] internal GameObject leaveButtonContainer;
 21        [SerializeField] internal GameObject openChatContainer;
 22        [SerializeField] internal GameObject joinedContainer;
 23        [SerializeField] internal Toggle muteNotificationsToggle;
 24
 25        private IChatController chatController;
 26        private DataStore_Mentions mentionsDataStore;
 27
 528        public PublicChatEntryModel Model => model;
 29
 30        public event Action<PublicChatEntry> OnOpenChat;
 31        public event Action<PublicChatEntry> OnLeave;
 32        public event Action<PublicChatEntry> OnJoin;
 33        public event Action<PublicChatEntry> OnOpenOptions;
 34
 35        public override void Awake()
 36        {
 5337            base.Awake();
 5638            openChatButton.onClick.AddListener(() => OnOpenChat?.Invoke(this));
 39
 5340            if (optionsButton)
 2941                optionsButton.onClick.AddListener(() => OnOpenOptions?.Invoke(this));
 42
 5343            if (leaveButton)
 2844                leaveButton.onClick.AddListener(() => OnLeave?.Invoke(this));
 45
 5346            if (joinButton)
 2647                joinButton.onClick.AddListener(() => OnJoin?.Invoke(this));
 5348        }
 49
 50        public void Initialize(
 51            IChatController chatController,
 52            DataStore_Mentions mentionsDataStore)
 53        {
 3754            this.chatController = chatController;
 3755            this.mentionsDataStore = mentionsDataStore;
 3756        }
 57
 58        public void Configure(PublicChatEntryModel newModel)
 59        {
 5360            model = newModel;
 5361            RefreshControl();
 5362        }
 63
 64        public override void RefreshControl()
 65        {
 5366            nameLabel.text = $"{namePrefix}{model.name}";
 5367            if (unreadNotifications)
 2968                unreadNotifications.Initialize(chatController, model.channelId, mentionsDataStore);
 5369            if (memberCountLabel)
 5370                memberCountLabel.SetText($"{model.memberCount} members {(model.showOnlyOnlineMembers ? "online" : "joine
 5371            if (joinedContainer)
 2472                joinedContainer.SetActive(model.isJoined);
 5373            if (leaveButtonContainer)
 2474                leaveButtonContainer.SetActive(model.isJoined);
 5375            if (openChatContainer)
 2476                openChatContainer.SetActive(!model.isJoined);
 5377            if (muteNotificationsToggle)
 2978                muteNotificationsToggle.SetIsOnWithoutNotify(model.muted);
 5379        }
 80
 81        public void Dock(ChannelContextualMenu contextualMenu)
 82        {
 183            contextualMenu.transform.position = optionsButton.transform.position;
 184        }
 85    }
 86}