< Summary

Class:FriendEntryBase
Assembly:FriendsHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/FriendsHUD/Scripts/Entries/FriendEntryBase.cs
Covered lines:33
Uncovered lines:13
Coverable lines:46
Total lines:113
Line coverage:71.7% (33 of 46)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
FriendEntryBase()0%110100%
Awake()0%330100%
OnPointerEnter(...)0%6200%
Dock(...)0%2100%
OnDisable()0%110100%
OnDestroy()0%110100%
EnableAvatarSnapshotFetching()0%440100%
DisableAvatarSnapshotFetching()0%440100%
RefreshControl()0%11.0911090.91%
Populate(...)0%110100%
IsVisible(...)0%2.152066.67%
OnAvatarImageChange(...)0%2100%
ShowUserProfile()0%6200%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/FriendsHUD/Scripts/Entries/FriendEntryBase.cs

#LineLine coverage
 1using System;
 2using TMPro;
 3using UnityEngine;
 4using UnityEngine.EventSystems;
 5using UnityEngine.UI;
 6
 7public class FriendEntryBase : BaseComponentView
 8{
 369    public FriendEntryModel Model { get; private set; } = new FriendEntryModel();
 10
 11    public Image playerBlockedImage;
 12
 13    [SerializeField] private RectTransform menuPositionReference;
 14    [SerializeField] protected internal TextMeshProUGUI playerNameText;
 15    [SerializeField] protected internal RawImage playerImage;
 16    [SerializeField] protected internal Button menuButton;
 17    [SerializeField] protected internal AudioEvent audioEventHover;
 18    [SerializeField] protected internal GameObject onlineStatusContainer;
 19    [SerializeField] protected internal GameObject offlineStatusContainer;
 20    [SerializeField] protected internal Button passportButton;
 21
 22    private StringVariable currentPlayerInfoCardId;
 23    private bool avatarFetchingEnabled;
 24
 25    public event Action<FriendEntryBase> OnMenuToggle;
 26
 27    public override void Awake()
 28    {
 3229        menuButton.onClick.RemoveAllListeners();
 3430        menuButton.onClick.AddListener(() => OnMenuToggle?.Invoke(this));
 3231        passportButton?.onClick.RemoveAllListeners();
 3232        passportButton?.onClick.AddListener(ShowUserProfile);
 1533    }
 34
 35    public override void OnPointerEnter(PointerEventData eventData)
 36    {
 037        if (audioEventHover != null)
 038            audioEventHover.Play(true);
 039    }
 40
 41    public void Dock(UserContextMenu contextMenuPanel)
 42    {
 043        var panelTransform = (RectTransform) contextMenuPanel.transform;
 044        panelTransform.pivot = menuPositionReference.pivot;
 045        panelTransform.position = menuPositionReference.position;
 046    }
 47
 48    public override void OnDisable()
 49    {
 5050        DisableAvatarSnapshotFetching();
 5051    }
 52
 53    protected void OnDestroy()
 54    {
 3255        DisableAvatarSnapshotFetching();
 3256    }
 57
 58    public virtual void EnableAvatarSnapshotFetching()
 59    {
 128360        if (avatarFetchingEnabled) return;
 761        avatarFetchingEnabled = true;
 62        // TODO: replace image loading for ImageComponentView implementation
 763        Model?.avatarSnapshotObserver?.AddListener(OnAvatarImageChange);
 764    }
 65
 66    public virtual void DisableAvatarSnapshotFetching()
 67    {
 15768        if (!avatarFetchingEnabled) return;
 769        avatarFetchingEnabled = false;
 70        // TODO: replace image loading for ImageComponentView implementation
 771        Model?.avatarSnapshotObserver?.RemoveListener(OnAvatarImageChange);
 772    }
 73
 74    public override void RefreshControl()
 75    {
 2176        if (playerNameText.text != Model.userName)
 2177            playerNameText.text = Model.userName;
 78
 2179        playerBlockedImage.enabled = Model.blocked;
 80
 2181        Model?.avatarSnapshotObserver?.RemoveListener(OnAvatarImageChange);
 82
 2183        if (isActiveAndEnabled && avatarFetchingEnabled)
 84            // TODO: replace image loading for ImageComponentView implementation
 085            Model.avatarSnapshotObserver?.AddListener(OnAvatarImageChange);
 86
 2187        if (onlineStatusContainer != null)
 688            onlineStatusContainer.SetActive(Model.status == PresenceStatus.ONLINE && !Model.blocked);
 2189        if (offlineStatusContainer != null)
 690            offlineStatusContainer.SetActive(Model.status != PresenceStatus.ONLINE && !Model.blocked);
 2191    }
 92
 93    public virtual void Populate(FriendEntryModel model)
 94    {
 2195        Model = model;
 2196        RefreshControl();
 2197    }
 98
 99    public virtual bool IsVisible(RectTransform container)
 100    {
 645101        if (!gameObject.activeSelf) return false;
 645102        return ((RectTransform) transform).CountCornersVisibleFrom(container) > 0;
 103    }
 104
 0105    private void OnAvatarImageChange(Texture2D texture) { playerImage.texture = texture; }
 106
 107    private void ShowUserProfile()
 108    {
 0109        if (currentPlayerInfoCardId == null)
 0110            currentPlayerInfoCardId = Resources.Load<StringVariable>("CurrentPlayerInfoCardId");
 0111        currentPlayerInfoCardId.Set(Model.userId);
 0112    }
 113}