< Summary

Class:FriendsHUDComponentView
Assembly:FriendsHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/FriendsHUD/Scripts/FriendsHUDComponentView.cs
Covered lines:79
Uncovered lines:30
Coverable lines:109
Total lines:275
Line coverage:72.4% (79 of 109)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
add_OnFriendRequestApproved(...)0%110100%
remove_OnFriendRequestApproved(...)0%110100%
add_OnCancelConfirmation(...)0%110100%
remove_OnCancelConfirmation(...)0%110100%
add_OnRejectConfirmation(...)0%110100%
remove_OnRejectConfirmation(...)0%110100%
add_OnFriendRequestSent(...)0%110100%
remove_OnFriendRequestSent(...)0%110100%
add_OnFriendRequestOpened(...)0%110100%
remove_OnFriendRequestOpened(...)0%110100%
add_OnWhisper(...)0%110100%
remove_OnWhisper(...)0%110100%
add_OnDeleteConfirmation(...)0%110100%
remove_OnDeleteConfirmation(...)0%110100%
add_OnRequireMoreFriends(...)0%110100%
remove_OnRequireMoreFriends(...)0%110100%
add_OnRequireMoreFriendRequests(...)0%110100%
remove_OnRequireMoreFriendRequests(...)0%110100%
add_OnSearchFriendsRequested(...)0%110100%
remove_OnSearchFriendsRequested(...)0%110100%
Create()0%110100%
Initialize(...)0%110100%
RefreshFriendsTab()0%110100%
Awake()0%110100%
HideLoadingSpinner()0%110100%
ShowLoadingSpinner()0%110100%
GetEntry(...)0%220100%
DisplayFriendUserNotFound()0%2100%
Show()0%110100%
Hide()0%110100%
Set(...)0%110100%
Remove(...)0%110100%
Set(...)0%110100%
IsActive()0%110100%
ShowRequestSendError(...)0%6200%
ShowRequestSendSuccess()0%2100%
ShowMoreFriendsToLoadHint(...)0%110100%
HideMoreFriendsToLoadHint()0%110100%
ShowMoreRequestsToLoadHint(...)0%110100%
HideMoreRequestsToLoadHint()0%110100%
ContainsFriend(...)0%110100%
ContainsFriendRequest(...)0%110100%
EnableSearchMode()0%2100%
DisableSearchMode()0%2100%
UpdateBlockStatus(...)0%2100%
ClearAll()0%110100%
RefreshControl()0%12300%
FocusTab(...)0%5.025090%
UpdateBlockStatus(...)0%6200%

File(s)

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

#LineLine coverage
 1using DCL.Social.Friends;
 2using SocialFeaturesAnalytics;
 3using System;
 4using UnityEngine;
 5using UnityEngine.UI;
 6
 7public class FriendsHUDComponentView : BaseComponentView, IFriendsHUDComponentView
 8{
 9    private const int FRIENDS_LIST_TAB_INDEX = 0;
 10    private const int FRIENDS_REQUEST_TAB_INDEX = 1;
 11
 12    [SerializeField] internal GameObject loadingSpinner;
 13    [SerializeField] internal Button closeButton;
 14    [SerializeField] internal Button friendsTabFocusButton;
 15    [SerializeField] internal Button friendRequestsTabFocusButton;
 16    [SerializeField] internal FriendsTabComponentView friendsTab;
 17    [SerializeField] internal FriendRequestsTabComponentView friendRequestsTab;
 18    [SerializeField] private Model model;
 19
 20    public event Action<FriendRequestEntryModel> OnFriendRequestApproved
 21    {
 122        add => friendRequestsTab.OnFriendRequestApproved += value;
 123        remove => friendRequestsTab.OnFriendRequestApproved -= value;
 24    }
 25
 26    public event Action<FriendRequestEntryModel> OnCancelConfirmation
 27    {
 128        add => friendRequestsTab.OnCancelConfirmation += value;
 129        remove => friendRequestsTab.OnCancelConfirmation -= value;
 30    }
 31
 32    public event Action<FriendRequestEntryModel> OnRejectConfirmation
 33    {
 134        add => friendRequestsTab.OnRejectConfirmation += value;
 135        remove => friendRequestsTab.OnRejectConfirmation -= value;
 36    }
 37
 38    public event Action<string> OnFriendRequestSent
 39    {
 140        add => friendRequestsTab.OnFriendRequestSent += value;
 141        remove => friendRequestsTab.OnFriendRequestSent -= value;
 42    }
 43
 44    public event Action<string> OnFriendRequestOpened
 45    {
 146        add => friendRequestsTab.OnFriendRequestOpened += value;
 147        remove => friendRequestsTab.OnFriendRequestOpened -= value;
 48    }
 49
 50    public event Action<FriendEntryModel> OnWhisper
 51    {
 152        add => friendsTab.OnWhisper += value;
 153        remove => friendsTab.OnWhisper -= value;
 54    }
 55
 56    public event Action<string> OnDeleteConfirmation
 57    {
 158        add => friendsTab.OnDeleteConfirmation += value;
 159        remove => friendsTab.OnDeleteConfirmation -= value;
 60    }
 61
 62    public event Action OnRequireMoreFriends
 63    {
 264        add => friendsTab.OnRequireMoreEntries += value;
 165        remove => friendsTab.OnRequireMoreEntries -= value;
 66    }
 67
 68    public event Action OnRequireMoreFriendRequests
 69    {
 270        add => friendRequestsTab.OnRequireMoreEntries += value;
 171        remove => friendRequestsTab.OnRequireMoreEntries -= value;
 72    }
 73
 74    public event Action<string> OnSearchFriendsRequested
 75    {
 176        add => friendsTab.OnSearchRequested += value;
 177        remove => friendsTab.OnSearchRequested -= value;
 78    }
 79
 80    public event Action OnFriendListDisplayed;
 81    public event Action OnRequestListDisplayed;
 82
 83    public event Action OnClose;
 84
 285    public RectTransform Transform => transform as RectTransform;
 86
 1587    public int FriendCount => friendsTab.Count;
 1488    public int FriendRequestCount => friendRequestsTab.Count;
 089    public int FriendRequestSentCount => friendRequestsTab.SentCount;
 090    public int FriendRequestReceivedCount => friendRequestsTab.ReceivedCount;
 191    public bool IsFriendListActive => friendsTab.gameObject.activeInHierarchy;
 092    public bool IsRequestListActive => friendRequestsTab.gameObject.activeInHierarchy;
 93
 94    public static FriendsHUDComponentView Create()
 95    {
 2396        var view = Instantiate(Resources.Load<GameObject>("SocialBarV1/FriendsHUD"))
 97            .GetComponent<FriendsHUDComponentView>();
 2398        return view;
 99    }
 100
 101    public void Initialize(IChatController chatController,
 102        IFriendsController friendsController,
 103        ISocialAnalytics socialAnalytics)
 104    {
 23105        friendsTab.Initialize(chatController, friendsController, socialAnalytics);
 23106    }
 107
 108    public void RefreshFriendsTab()
 109    {
 1110        friendsTab.RefreshControl();
 1111    }
 112
 113    public override void Awake()
 114    {
 23115        base.Awake();
 116
 23117        friendsTabFocusButton.onClick.AddListener(() => FocusTab(FRIENDS_LIST_TAB_INDEX));
 23118        friendRequestsTabFocusButton.onClick.AddListener(() => FocusTab(FRIENDS_REQUEST_TAB_INDEX));
 23119        closeButton.onClick.AddListener(() =>
 120        {
 0121            OnClose?.Invoke();
 0122            Hide();
 0123        });
 124
 23125        friendRequestsTab.Expand();
 23126    }
 127
 128    public void HideLoadingSpinner()
 129    {
 2130        loadingSpinner.SetActive(false);
 2131        model.isLoadingSpinnerActive = false;
 2132    }
 133
 134    public void ShowLoadingSpinner()
 135    {
 3136        loadingSpinner.SetActive(true);
 3137        model.isLoadingSpinnerActive = true;
 3138    }
 139
 140    public FriendEntryBase GetEntry(string userId)
 141    {
 14142        return (FriendEntryBase) friendsTab.Get(userId) ?? friendRequestsTab.Get(userId);
 143    }
 144
 0145    public void DisplayFriendUserNotFound() => friendRequestsTab.ShowUserNotFoundNotification();
 146
 147    public void Show()
 148    {
 2149        model.visible = true;
 2150        gameObject.SetActive(true);
 2151        AudioScriptableObjects.dialogOpen.Play(true);
 2152    }
 153
 154    public void Hide()
 155    {
 1156        model.visible = false;
 1157        gameObject.SetActive(false);
 1158        AudioScriptableObjects.dialogClose.Play(true);
 1159    }
 160
 161    public void Set(string userId, FriendEntryModel model)
 162    {
 7163        friendRequestsTab.Remove(userId);
 7164        friendsTab.Enqueue(userId, model);
 7165    }
 166
 167    public void Remove(string userId)
 168    {
 5169        friendRequestsTab.Remove(userId);
 5170        friendsTab.Remove(userId);
 5171    }
 172
 173    public void Set(string userId, FriendRequestEntryModel model)
 174    {
 6175        friendRequestsTab.Enqueue(userId, model);
 6176        friendsTab.Remove(userId);
 6177    }
 178
 3179    public bool IsActive() => gameObject.activeInHierarchy;
 180
 181    public void ShowRequestSendError(FriendRequestError error)
 182    {
 183        switch (error)
 184        {
 185            case FriendRequestError.AlreadyFriends:
 0186                friendRequestsTab.ShowAlreadyFriendsNotification();
 187                break;
 188        }
 0189    }
 190
 191    public void ShowRequestSendSuccess()
 192    {
 0193        friendRequestsTab.ShowRequestSuccessfullySentNotification();
 0194    }
 195
 2196    public void ShowMoreFriendsToLoadHint(int hiddenCount) => friendsTab.ShowMoreFriendsToLoadHint(hiddenCount);
 197
 1198    public void HideMoreFriendsToLoadHint() => friendsTab.HideMoreFriendsToLoadHint();
 199
 200    public void ShowMoreRequestsToLoadHint(int hiddenCount) =>
 2201        friendRequestsTab.ShowMoreEntriesToLoadHint(hiddenCount);
 202
 1203    public void HideMoreRequestsToLoadHint() => friendRequestsTab.HideMoreFriendsToLoadHint();
 204
 14205    public bool ContainsFriend(string userId) => friendsTab.Get(userId) != null;
 206
 14207    public bool ContainsFriendRequest(string userId) => friendRequestsTab.Get(userId) != null;
 208
 0209    public void EnableSearchMode() => friendsTab.EnableSearchMode();
 210
 0211    public void DisableSearchMode() => friendsTab.DisableSearchMode();
 212
 213    public void UpdateBlockStatus(string userId, bool blocked)
 214    {
 0215        UpdateBlockStatus(blocked, friendsTab.Get(userId));
 0216        UpdateBlockStatus(blocked, friendRequestsTab.Get(userId));
 0217    }
 218
 219    public void ClearAll()
 220    {
 1221        friendsTab.Clear();
 1222        friendRequestsTab.Clear();
 1223    }
 224
 225    public override void RefreshControl()
 226    {
 0227        if (model.isLoadingSpinnerActive)
 0228            ShowLoadingSpinner();
 229        else
 0230            HideLoadingSpinner();
 231
 0232        if (model.visible)
 0233            Show();
 234        else
 0235            Hide();
 236
 0237        FocusTab(model.focusedTabIndex);
 0238    }
 239
 240    internal void FocusTab(int index)
 241    {
 15242        model.focusedTabIndex = index;
 243
 15244        if (index == FRIENDS_LIST_TAB_INDEX)
 245        {
 8246            friendsTab.Show();
 8247            friendRequestsTab.Hide();
 8248            OnFriendListDisplayed?.Invoke();
 249        }
 7250        else if (index == FRIENDS_REQUEST_TAB_INDEX)
 251        {
 7252            friendsTab.Hide();
 7253            friendRequestsTab.Show();
 7254            OnRequestListDisplayed?.Invoke();
 255        }
 256        else
 0257            throw new IndexOutOfRangeException();
 258    }
 259
 260    private void UpdateBlockStatus(bool blocked, FriendEntryBase friendEntry)
 261    {
 0262        if (friendEntry == null) return;
 0263        var friendModel = friendEntry.Model;
 0264        friendModel.blocked = blocked;
 0265        friendEntry.RefreshControl();
 0266    }
 267
 268    [Serializable]
 269    private struct Model
 270    {
 271        public int focusedTabIndex;
 272        public bool isLoadingSpinnerActive;
 273        public bool visible;
 274    }
 275}

Methods/Properties

add_OnFriendRequestApproved(System.Action[FriendRequestEntryModel])
remove_OnFriendRequestApproved(System.Action[FriendRequestEntryModel])
add_OnCancelConfirmation(System.Action[FriendRequestEntryModel])
remove_OnCancelConfirmation(System.Action[FriendRequestEntryModel])
add_OnRejectConfirmation(System.Action[FriendRequestEntryModel])
remove_OnRejectConfirmation(System.Action[FriendRequestEntryModel])
add_OnFriendRequestSent(System.Action[String])
remove_OnFriendRequestSent(System.Action[String])
add_OnFriendRequestOpened(System.Action[String])
remove_OnFriendRequestOpened(System.Action[String])
add_OnWhisper(System.Action[FriendEntryModel])
remove_OnWhisper(System.Action[FriendEntryModel])
add_OnDeleteConfirmation(System.Action[String])
remove_OnDeleteConfirmation(System.Action[String])
add_OnRequireMoreFriends(System.Action)
remove_OnRequireMoreFriends(System.Action)
add_OnRequireMoreFriendRequests(System.Action)
remove_OnRequireMoreFriendRequests(System.Action)
add_OnSearchFriendsRequested(System.Action[String])
remove_OnSearchFriendsRequested(System.Action[String])
Transform()
FriendCount()
FriendRequestCount()
FriendRequestSentCount()
FriendRequestReceivedCount()
IsFriendListActive()
IsRequestListActive()
Create()
Initialize(IChatController, DCL.Social.Friends.IFriendsController, SocialFeaturesAnalytics.ISocialAnalytics)
RefreshFriendsTab()
Awake()
HideLoadingSpinner()
ShowLoadingSpinner()
GetEntry(System.String)
DisplayFriendUserNotFound()
Show()
Hide()
Set(System.String, FriendEntryModel)
Remove(System.String)
Set(System.String, FriendRequestEntryModel)
IsActive()
ShowRequestSendError(FriendRequestError)
ShowRequestSendSuccess()
ShowMoreFriendsToLoadHint(System.Int32)
HideMoreFriendsToLoadHint()
ShowMoreRequestsToLoadHint(System.Int32)
HideMoreRequestsToLoadHint()
ContainsFriend(System.String)
ContainsFriendRequest(System.String)
EnableSearchMode()
DisableSearchMode()
UpdateBlockStatus(System.String, System.Boolean)
ClearAll()
RefreshControl()
FocusTab(System.Int32)
UpdateBlockStatus(System.Boolean, FriendEntryBase)