< 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:32
Uncovered lines:14
Coverable lines:46
Total lines:115
Line coverage:69.5% (32 of 46)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
FriendEntryBase()0%110100%
Awake()0%3.073080%
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 DCL.Social.Friends;
 3using TMPro;
 4using UnityEngine;
 5using UnityEngine.EventSystems;
 6using UnityEngine.UI;
 7
 8public class FriendEntryBase : BaseComponentView
 9{
 18010    public FriendEntryModel Model { get; private set; } = new FriendEntryModel();
 11
 12    public Image playerBlockedImage;
 13
 14    [SerializeField] private RectTransform menuPositionReference;
 15    [SerializeField] protected internal TextMeshProUGUI playerNameText;
 16    [SerializeField] protected internal RawImage playerImage;
 17    [SerializeField] protected internal Button menuButton;
 18    [SerializeField] protected internal AudioEvent audioEventHover;
 19    [SerializeField] protected internal GameObject onlineStatusContainer;
 20    [SerializeField] protected internal GameObject offlineStatusContainer;
 21    [SerializeField] protected internal Button passportButton;
 22
 23    private StringVariable currentPlayerInfoCardId;
 24    private bool avatarFetchingEnabled;
 25
 26    public event Action<FriendEntryBase> OnMenuToggle;
 27
 28    public override void Awake()
 29    {
 3230        menuButton.onClick.RemoveAllListeners();
 3431        menuButton.onClick.AddListener(() => OnMenuToggle?.Invoke(this));
 3232        passportButton?.onClick.RemoveAllListeners();
 3233        passportButton?.onClick.AddListener(ShowUserProfile);
 034    }
 35
 36    public override void OnPointerEnter(PointerEventData eventData)
 37    {
 038        if (audioEventHover != null)
 039            audioEventHover.Play(true);
 040    }
 41
 42    public void Dock(UserContextMenu contextMenuPanel)
 43    {
 044        var panelTransform = (RectTransform) contextMenuPanel.transform;
 045        panelTransform.pivot = menuPositionReference.pivot;
 046        panelTransform.position = menuPositionReference.position;
 047    }
 48
 49    public override void OnDisable()
 50    {
 4451        DisableAvatarSnapshotFetching();
 4452    }
 53
 54    protected void OnDestroy()
 55    {
 3256        DisableAvatarSnapshotFetching();
 3257    }
 58
 59    public virtual void EnableAvatarSnapshotFetching()
 60    {
 1389161        if (avatarFetchingEnabled) return;
 762        avatarFetchingEnabled = true;
 63        // TODO: replace image loading for ImageComponentView implementation
 764        Model?.avatarSnapshotObserver?.AddListener(OnAvatarImageChange);
 765    }
 66
 67    public virtual void DisableAvatarSnapshotFetching()
 68    {
 14569        if (!avatarFetchingEnabled) return;
 770        avatarFetchingEnabled = false;
 71        // TODO: replace image loading for ImageComponentView implementation
 772        Model?.avatarSnapshotObserver?.RemoveListener(OnAvatarImageChange);
 773    }
 74
 75    public override void RefreshControl()
 76    {
 2177        if (playerNameText.text != Model.userName)
 2178            playerNameText.text = Model.userName;
 79
 2180        playerBlockedImage.enabled = Model.blocked;
 81
 2182        Model?.avatarSnapshotObserver?.RemoveListener(OnAvatarImageChange);
 83
 2184        if (isActiveAndEnabled && avatarFetchingEnabled)
 85            // TODO: replace image loading for ImageComponentView implementation
 086            Model.avatarSnapshotObserver?.AddListener(OnAvatarImageChange);
 87
 2188        if (onlineStatusContainer != null)
 989            onlineStatusContainer.SetActive(Model.status == PresenceStatus.ONLINE && !Model.blocked);
 2190        if (offlineStatusContainer != null)
 991            offlineStatusContainer.SetActive(Model.status != PresenceStatus.ONLINE && !Model.blocked);
 2192    }
 93
 94    public virtual void Populate(FriendEntryModel model)
 95    {
 2196        Model = model;
 2197        RefreshControl();
 2198    }
 99
 100    public virtual bool IsVisible(RectTransform container)
 101    {
 6949102        if (!gameObject.activeSelf) return false;
 6949103        return ((RectTransform) transform).CountCornersVisibleFrom(container) > 0;
 104    }
 105
 0106    private void OnAvatarImageChange(Texture2D texture) { playerImage.texture = texture; }
 107
 108    private void ShowUserProfile()
 109    {
 0110        if (currentPlayerInfoCardId == null)
 0111            currentPlayerInfoCardId = Resources.Load<StringVariable>("CurrentPlayerInfoCardId");
 112
 0113        currentPlayerInfoCardId.Set(Model.userId);
 0114    }
 115}