< Summary

Class:DCL.Chat.HUD.PublicChatEntry
Assembly:WorldChatWindowHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/WorldChatWindowHUD/PublicChatEntry.cs
Covered lines:28
Uncovered lines:3
Coverable lines:31
Total lines:81
Line coverage:90.3% (28 of 31)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
PublicChatEntry()0%110100%
Create()0%110100%
Awake()0%330100%
Initialize(...)0%2100%
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 System;
 2using TMPro;
 3using UnityEngine;
 4using UnityEngine.UI;
 5
 6namespace DCL.Chat.HUD
 7{
 8    public class PublicChatEntry : BaseComponentView, IComponentModelConfig<PublicChatEntryModel>
 9    {
 10        [SerializeField] internal Button openChatButton;
 11        [SerializeField] internal TMP_Text nameLabel;
 12        [SerializeField] internal PublicChatEntryModel model;
 13        [SerializeField] internal UnreadNotificationBadge unreadNotifications;
 5514        [SerializeField] internal string namePrefix = "#";
 15        [SerializeField] internal TMP_Text memberCountLabel;
 16        [SerializeField] internal Button optionsButton;
 17        [SerializeField] internal Button leaveButton;
 18        [SerializeField] internal GameObject leaveButtonContainer;
 19        [SerializeField] internal GameObject openChatContainer;
 20        [SerializeField] internal GameObject joinedContainer;
 21        [SerializeField] internal Toggle muteNotificationsToggle;
 22
 23        private IChatController chatController;
 24
 025        public PublicChatEntryModel Model => model;
 26
 27        public event Action<PublicChatEntry> OnOpenChat;
 28        public event Action<PublicChatEntry> OnLeave;
 29        public event Action<PublicChatEntry> OnOpenOptions;
 30
 31        public static PublicChatEntry Create()
 32        {
 733            return Instantiate(Resources.Load<PublicChatEntry>("SocialBarV1/PublicChannelElement"));
 34        }
 35
 36        public override void Awake()
 37        {
 5138            base.Awake();
 5439            openChatButton.onClick.AddListener(() => OnOpenChat?.Invoke(this));
 40
 5141            if (optionsButton)
 2942                optionsButton.onClick.AddListener(() => OnOpenOptions?.Invoke(this));
 43
 5144            if (leaveButton)
 2645                leaveButton.onClick.AddListener(() => OnLeave?.Invoke(this));
 5146        }
 47
 48        public void Initialize(IChatController chatController)
 49        {
 050            this.chatController = chatController;
 051        }
 52
 53        public void Configure(PublicChatEntryModel newModel)
 54        {
 5155            model = newModel;
 5156            RefreshControl();
 5157        }
 58
 59        public override void RefreshControl()
 60        {
 5161            nameLabel.text = $"{namePrefix}{model.name}";
 5162            if (unreadNotifications)
 2963                unreadNotifications.Initialize(chatController, model.channelId);
 5164            if (memberCountLabel)
 5165                memberCountLabel.SetText($"{model.memberCount} members {(model.showOnlyOnlineMembers ? "online" : "joine
 5166            if (joinedContainer)
 2267                joinedContainer.SetActive(model.isJoined);
 5168            if (leaveButtonContainer)
 2269                leaveButtonContainer.SetActive(model.isJoined);
 5170            if (openChatContainer)
 2271                openChatContainer.SetActive(!model.isJoined);
 5172            if (muteNotificationsToggle)
 2973                muteNotificationsToggle.SetIsOnWithoutNotify(model.muted);
 5174        }
 75
 76        public void Dock(ChannelContextualMenu contextualMenu)
 77        {
 178            contextualMenu.transform.position = optionsButton.transform.position;
 179        }
 80    }
 81}