< Summary

Class:VoiceChatPlayerComponentView
Assembly:VoiceChatHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/VoiceChatHUD/VoiceChatPlayerComponentView.cs
Covered lines:77
Uncovered lines:13
Coverable lines:90
Total lines:197
Line coverage:85.5% (77 of 90)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Awake()0%110100%
Configure(...)0%110100%
RefreshControl()0%22090.91%
SetUserId(...)0%110100%
SetUserImage(...)0%3.033085.71%
SetUserName(...)0%2.032080%
SetAsMuted(...)0%330100%
SetAsTalking(...)0%4.134080%
SetAsBlocked(...)0%2.032080%
SetAsFriend(...)0%2.032080%
SetAsJoined(...)0%2.032080%
SetBackgroundHover(...)0%330100%
SetActive(...)0%110100%
DockAndOpenUserContextMenu(...)0%110100%
OnFocus()0%110100%
OnLoseFocus()0%110100%
Dispose()0%110100%
Create()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/VoiceChatHUD/VoiceChatPlayerComponentView.cs

#LineLine coverage
 1using System;
 2using TMPro;
 3using UnityEngine;
 4using UnityEngine.UI;
 5
 6public class VoiceChatPlayerComponentView : BaseComponentView, IVoiceChatPlayerComponentView, IComponentModelConfig<Voic
 7{
 8    [Header("Prefab References")]
 9    [SerializeField] internal ImageComponentView avatarPreview;
 10    [SerializeField] internal Sprite defaultUserSprite;
 11    [SerializeField] internal TextMeshProUGUI userName;
 12    [SerializeField] internal GameObject buttonsContainer;
 13    [SerializeField] internal ButtonComponentView muteButton;
 14    [SerializeField] internal Image muteButtonImage;
 15    [SerializeField] internal ButtonComponentView unmuteButton;
 16    [SerializeField] internal GameObject blockedGO;
 17    [SerializeField] internal GameObject friendLabel;
 18    [SerializeField] internal GameObject backgroundHover;
 19    [SerializeField] internal Color talkingColor;
 20    [SerializeField] internal Color nonTalkingColor;
 21    [SerializeField] internal ButtonComponentView menuButton;
 22    [SerializeField] internal RectTransform menuPositionReference;
 23
 24    [Header("Configuration")]
 25    [SerializeField] internal VoiceChatPlayerComponentModel model;
 26
 27    public event Action<string, bool> OnMuteUser;
 28    public event Action<string> OnContextMenuOpen;
 29
 30    public override void Awake()
 31    {
 10632        base.Awake();
 33
 10634        muteButton.onClick.AddListener(() =>
 35        {
 036            SetAsMuted(true);
 037            OnMuteUser?.Invoke(model.userId, true);
 038        });
 39
 10640        unmuteButton.onClick.AddListener(() =>
 41        {
 042            SetAsMuted(false);
 043            OnMuteUser?.Invoke(model.userId, false);
 044        });
 45
 10646        menuButton.onClick.AddListener(() => OnContextMenuOpen?.Invoke(model.userId));
 10647    }
 48
 49    public void Configure(VoiceChatPlayerComponentModel newModel)
 50    {
 251        model = newModel;
 252        RefreshControl();
 253    }
 54
 55    public override void RefreshControl()
 56    {
 257        if (model == null)
 058            return;
 59
 260        SetUserImage(model.userImageUrl);
 261        SetUserName(model.userName);
 262        SetAsMuted(model.isMuted);
 263        SetAsTalking(model.isTalking);
 264        SetAsBlocked(model.isBlocked);
 265        SetAsFriend(model.isFriend);
 266        SetAsJoined(model.isJoined);
 267        SetBackgroundHover(model.isBackgroundHover);
 268    }
 69
 270    public void SetUserId(string userId) { model.userId = userId; }
 71
 72    public void SetUserImage(string url)
 73    {
 374        model.userImageUrl = url;
 75
 376        if (avatarPreview == null)
 077            return;
 78
 379        if (!string.IsNullOrEmpty(url))
 180            avatarPreview.SetImage(url);
 81        else
 282            avatarPreview.SetImage(defaultUserSprite);
 283    }
 84
 85    public void SetUserName(string userName)
 86    {
 387        model.userName = userName;
 88
 389        if (userName == null)
 090            return;
 91
 392        this.userName.text = userName;
 393    }
 94
 95    public void SetAsMuted(bool isMuted)
 96    {
 697        model.isMuted = isMuted;
 98
 699        if (muteButton != null)
 6100            muteButton.gameObject.SetActive(!isMuted);
 101
 6102        if (unmuteButton != null)
 6103            unmuteButton.gameObject.SetActive(isMuted);
 6104    }
 105
 106    public void SetAsTalking(bool isTalking)
 107    {
 10108        model.isTalking = isTalking;
 109
 10110        if (muteButtonImage == null)
 0111            return;
 112
 10113        muteButtonImage.color = isTalking ? talkingColor : nonTalkingColor;
 10114    }
 115
 116    public void SetAsBlocked(bool isBlocked)
 117    {
 10118        model.isBlocked = isBlocked;
 119
 10120        if (blockedGO == null)
 0121            return;
 122
 10123        blockedGO.SetActive(isBlocked);
 10124    }
 125
 126    public void SetAsFriend(bool isFriend)
 127    {
 10128        model.isFriend = isFriend;
 129
 10130        if (friendLabel == null)
 0131            return;
 132
 10133        friendLabel.SetActive(isFriend);
 10134    }
 135
 136    public void SetAsJoined(bool isJoined)
 137    {
 19138        model.isJoined = isJoined;
 139
 19140        if (buttonsContainer == null)
 0141            return;
 142
 19143        buttonsContainer.SetActive(isJoined);
 19144    }
 145
 146    public void SetBackgroundHover(bool isHover)
 147    {
 113148        model.isBackgroundHover = isHover;
 149
 113150        if (backgroundHover != null)
 113151            backgroundHover.SetActive(isHover);
 152
 113153        if (menuButton != null)
 113154            menuButton.gameObject.SetActive(isHover);
 113155    }
 156
 8157    public void SetActive(bool isActive) { gameObject.SetActive(isActive); }
 158
 159    public void DockAndOpenUserContextMenu(UserContextMenu contextMenuPanel)
 160    {
 1161        var panelTransform = (RectTransform)contextMenuPanel.transform;
 1162        panelTransform.pivot = menuPositionReference.pivot;
 1163        panelTransform.position = menuPositionReference.position;
 1164        contextMenuPanel.Show(model.userId);
 1165    }
 166
 167    public override void OnFocus()
 168    {
 1169        base.OnFocus();
 170
 1171        SetBackgroundHover(true);
 1172    }
 173
 174    public override void OnLoseFocus()
 175    {
 108176        base.OnLoseFocus();
 177
 108178        SetBackgroundHover(false);
 108179    }
 180
 181    public override void Dispose()
 182    {
 126183        base.Dispose();
 184
 126185        muteButton.onClick.RemoveAllListeners();
 126186        unmuteButton.onClick.RemoveAllListeners();
 126187        menuButton.onClick.RemoveAllListeners();
 126188    }
 189
 190    internal static VoiceChatPlayerComponentView Create()
 191    {
 84192        VoiceChatPlayerComponentView voiceChatPlayerComponentView = Instantiate(Resources.Load<GameObject>("SocialBarV1/
 84193        voiceChatPlayerComponentView.name = "_VoiceChatPlayer";
 194
 84195        return voiceChatPlayerComponentView;
 196    }
 197}