< 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:93
Uncovered lines:35
Coverable lines:128
Total lines:306
Line coverage:72.6% (93 of 128)
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_OnWhisper(...)0%110100%
remove_OnWhisper(...)0%110100%
add_OnDeleteConfirmation(...)0%2100%
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%
Awake()0%110100%
HideLoadingSpinner()0%110100%
ShowLoadingSpinner()0%110100%
GetAllEntries()0%2100%
GetEntry(...)0%220100%
DisplayFriendUserNotFound()0%2100%
IsFriendListCreationReady()0%2100%
Show()0%110100%
Hide()0%110100%
Set(...)0%9.839078.26%
Set(...)0%6.116085.71%
Populate(...)0%2100%
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%
FilterFriends(...)0%2100%
ClearFriendFilter()0%2100%
RefreshControl()0%12300%
FocusTab(...)0%3.013090%

File(s)

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

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using SocialFeaturesAnalytics;
 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<FriendEntryModel> OnWhisper
 45    {
 146        add => friendsTab.OnWhisper += value;
 147        remove => friendsTab.OnWhisper -= value;
 48    }
 49
 50    public event Action<string> OnDeleteConfirmation
 51    {
 052        add => friendsTab.OnDeleteConfirmation += value;
 153        remove => friendsTab.OnDeleteConfirmation -= value;
 54    }
 55
 56    public event Action OnRequireMoreFriends
 57    {
 258        add => friendsTab.OnRequireMoreFriends += value;
 159        remove => friendsTab.OnRequireMoreFriends -= value;
 60    }
 61
 62    public event Action OnRequireMoreFriendRequests
 63    {
 264        add => friendRequestsTab.OnRequireMoreEntries += value;
 165        remove => friendRequestsTab.OnRequireMoreEntries -= value;
 66    }
 67
 68    public event Action<string> OnSearchFriendsRequested
 69    {
 170        add => friendsTab.OnSearchRequested += value;
 171        remove => friendsTab.OnSearchRequested -= value;
 72    }
 73
 74    public event Action OnClose;
 75
 276    public RectTransform Transform => transform as RectTransform;
 77
 78    public bool ListByOnlineStatus
 79    {
 180        set => friendsTab.ListByOnlineStatus = value;
 81    }
 82
 1483    public int FriendCount => friendsTab.Count;
 1484    public int FriendRequestCount => friendRequestsTab.Count;
 85
 86    public static FriendsHUDComponentView Create()
 87    {
 2388        var view = Instantiate(Resources.Load<GameObject>("SocialBarV1/FriendsHUD"))
 89            .GetComponent<FriendsHUDComponentView>();
 2390        return view;
 91    }
 92
 93    public void Initialize(IChatController chatController,
 94        ILastReadMessagesService lastReadMessagesService,
 95        IFriendsController friendsController,
 96        ISocialAnalytics socialAnalytics)
 97    {
 2398        friendsTab.Initialize(chatController, lastReadMessagesService, friendsController, socialAnalytics);
 2399    }
 100
 101    public override void Awake()
 102    {
 23103        base.Awake();
 104
 23105        friendsTabFocusButton.onClick.AddListener(() => FocusTab(FRIENDS_LIST_TAB_INDEX));
 23106        friendRequestsTabFocusButton.onClick.AddListener(() => FocusTab(FRIENDS_REQUEST_TAB_INDEX));
 23107        closeButton.onClick.AddListener(() =>
 108        {
 0109            OnClose?.Invoke();
 0110            Hide();
 0111        });
 112
 23113        friendsTab.Expand();
 23114        friendRequestsTab.Expand();
 23115    }
 116
 117    public void HideLoadingSpinner()
 118    {
 2119        loadingSpinner.SetActive(false);
 2120        model.isLoadingSpinnerActive = false;
 2121    }
 122
 123    public void ShowLoadingSpinner()
 124    {
 3125        loadingSpinner.SetActive(true);
 3126        model.isLoadingSpinnerActive = true;
 3127    }
 128
 129    public List<FriendEntryBase> GetAllEntries()
 130    {
 0131        var result = new List<FriendEntryBase>();
 0132        result.AddRange(friendsTab.Entries.Values);
 0133        result.AddRange(friendRequestsTab.Entries.Values);
 0134        return result;
 135    }
 136
 137    public FriendEntryBase GetEntry(string userId)
 138    {
 14139        return (FriendEntryBase) friendsTab.Get(userId) ?? friendRequestsTab.Get(userId);
 140    }
 141
 0142    public void DisplayFriendUserNotFound() => friendRequestsTab.ShowUserNotFoundNotification();
 143
 0144    public bool IsFriendListCreationReady() => friendsTab.DidDeferredCreationCompleted;
 145
 146    public void Show()
 147    {
 2148        model.visible = true;
 2149        gameObject.SetActive(true);
 2150        AudioScriptableObjects.dialogOpen.Play(true);
 2151    }
 152
 153    public void Hide()
 154    {
 1155        model.visible = false;
 1156        gameObject.SetActive(false);
 1157        AudioScriptableObjects.dialogClose.Play(true);
 1158    }
 159
 160    public void Set(string userId,
 161        FriendshipAction friendshipAction,
 162        FriendEntryModel model)
 163    {
 164        switch (friendshipAction)
 165        {
 166            case FriendshipAction.NONE:
 0167                friendRequestsTab.Remove(userId);
 0168                friendsTab.Remove(userId);
 0169                break;
 170            case FriendshipAction.APPROVED:
 5171                friendRequestsTab.Remove(userId);
 5172                friendsTab.Enqueue(userId, model);
 5173                break;
 174            case FriendshipAction.REJECTED:
 1175                friendRequestsTab.Remove(userId);
 1176                friendsTab.Remove(userId);
 1177                break;
 178            case FriendshipAction.CANCELLED:
 1179                friendRequestsTab.Remove(userId);
 1180                friendsTab.Remove(userId);
 1181                break;
 182            case FriendshipAction.REQUESTED_FROM:
 2183                friendRequestsTab.Enqueue(userId, (FriendRequestEntryModel) model);
 2184                friendsTab.Remove(userId);
 2185                break;
 186            case FriendshipAction.REQUESTED_TO:
 1187                friendRequestsTab.Enqueue(userId, (FriendRequestEntryModel) model);
 1188                friendsTab.Remove(userId);
 1189                break;
 190            case FriendshipAction.DELETED:
 2191                friendRequestsTab.Remove(userId);
 2192                friendsTab.Remove(userId);
 2193                break;
 194            default:
 0195                Debug.LogError($"FriendshipAction not supported: {friendshipAction}");
 196                break;
 197        }
 0198    }
 199
 200    public void Set(string userId, FriendshipStatus friendshipStatus, FriendEntryModel model)
 201    {
 202        switch (friendshipStatus)
 203        {
 204            case FriendshipStatus.FRIEND:
 1205                friendsTab.Enqueue(userId, model);
 1206                friendRequestsTab.Remove(userId);
 1207                break;
 208            case FriendshipStatus.NOT_FRIEND:
 1209                friendsTab.Remove(userId);
 1210                friendRequestsTab.Remove(userId);
 1211                break;
 212            case FriendshipStatus.REQUESTED_TO:
 1213                friendsTab.Remove(userId);
 1214                friendRequestsTab.Enqueue(userId, (FriendRequestEntryModel) model);
 1215                break;
 216            case FriendshipStatus.REQUESTED_FROM:
 1217                friendsTab.Remove(userId);
 1218                friendRequestsTab.Enqueue(userId, (FriendRequestEntryModel) model);
 1219                break;
 220            default:
 0221                Debug.LogError($"FriendshipStatus not supported: {friendshipStatus}");
 222                break;
 223        }
 0224    }
 225
 226    public void Populate(string userId, FriendEntryModel model)
 227    {
 0228        friendsTab.Populate(userId, model);
 0229        friendRequestsTab.Populate(userId, (FriendRequestEntryModel) model);
 0230    }
 231
 3232    public bool IsActive() => gameObject.activeInHierarchy;
 233
 234    public void ShowRequestSendError(FriendRequestError error)
 235    {
 236        switch (error)
 237        {
 238            case FriendRequestError.AlreadyFriends:
 0239                friendRequestsTab.ShowAlreadyFriendsNotification();
 240                break;
 241        }
 0242    }
 243
 244    public void ShowRequestSendSuccess()
 245    {
 0246        friendRequestsTab.ShowRequestSuccessfullySentNotification();
 0247    }
 248
 1249    public void ShowMoreFriendsToLoadHint(int pendingFriendsCount) => friendsTab.ShowMoreFriendsToLoadHint(pendingFriend
 250
 1251    public void HideMoreFriendsToLoadHint() => friendsTab.HideMoreFriendsToLoadHint();
 252
 253    public void ShowMoreRequestsToLoadHint(int pendingRequestsCount) =>
 1254        friendRequestsTab.ShowMoreFriendsToLoadHint(pendingRequestsCount);
 255
 1256    public void HideMoreRequestsToLoadHint() => friendRequestsTab.HideMoreFriendsToLoadHint();
 257
 14258    public bool ContainsFriend(string userId) => friendsTab.Get(userId) != null;
 259
 14260    public bool ContainsFriendRequest(string userId) => friendRequestsTab.Get(userId) != null;
 261
 0262    public void FilterFriends(Dictionary<string, FriendEntryModel> friends) => friendsTab.Filter(friends);
 263
 0264    public void ClearFriendFilter() => friendsTab.ClearFilter();
 265
 266    public override void RefreshControl()
 267    {
 0268        if (model.isLoadingSpinnerActive)
 0269            ShowLoadingSpinner();
 270        else
 0271            HideLoadingSpinner();
 272
 0273        if (model.visible)
 0274            Show();
 275        else
 0276            Hide();
 277
 0278        FocusTab(model.focusedTabIndex);
 0279    }
 280
 281    internal void FocusTab(int index)
 282    {
 15283        model.focusedTabIndex = index;
 284
 15285        if (index == FRIENDS_LIST_TAB_INDEX)
 286        {
 8287            friendsTab.Show();
 8288            friendRequestsTab.Hide();
 8289        }
 7290        else if (index == FRIENDS_REQUEST_TAB_INDEX)
 291        {
 7292            friendsTab.Hide();
 7293            friendRequestsTab.Show();
 7294        }
 295        else
 0296            throw new IndexOutOfRangeException();
 297    }
 298
 299    [Serializable]
 300    private struct Model
 301    {
 302        public int focusedTabIndex;
 303        public bool isLoadingSpinnerActive;
 304        public bool visible;
 305    }
 306}

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_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()
ListByOnlineStatus(System.Boolean)
FriendCount()
FriendRequestCount()
Create()
Initialize(IChatController, ILastReadMessagesService, IFriendsController, SocialFeaturesAnalytics.ISocialAnalytics)
Awake()
HideLoadingSpinner()
ShowLoadingSpinner()
GetAllEntries()
GetEntry(System.String)
DisplayFriendUserNotFound()
IsFriendListCreationReady()
Show()
Hide()
Set(System.String, FriendshipAction, FriendEntryModel)
Set(System.String, FriendshipStatus, FriendEntryModel)
Populate(System.String, FriendEntryModel)
IsActive()
ShowRequestSendError(FriendRequestError)
ShowRequestSendSuccess()
ShowMoreFriendsToLoadHint(System.Int32)
HideMoreFriendsToLoadHint()
ShowMoreRequestsToLoadHint(System.Int32)
HideMoreRequestsToLoadHint()
ContainsFriend(System.String)
ContainsFriendRequest(System.String)
FilterFriends(System.Collections.Generic.Dictionary[String,FriendEntryModel])
ClearFriendFilter()
RefreshControl()
FocusTab(System.Int32)