< Summary

Class:FriendsNotificationPlugin
Assembly:SocialBarHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/SocialBarHUD/FriendsNotificationPlugin.cs
Covered lines:23
Uncovered lines:1
Coverable lines:24
Total lines:59
Line coverage:95.8% (23 of 24)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
FriendsNotificationPlugin(...)0%110100%
Dispose()0%110100%
MarkFriendsAsSeen(...)0%110100%
UpdatePendingFriendRequests(...)0%110100%
UpdateNewApprovedFriends()0%2.012085.71%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/SocialBarHUD/FriendsNotificationPlugin.cs

#LineLine coverage
 1using DCL;
 2using DCL.Helpers;
 3using DCL.Social.Friends;
 4
 5public class FriendsNotificationPlugin : IPlugin
 6{
 7    private const string PLAYER_PREFS_SEEN_FRIEND_COUNT = "SeenFriendsCount";
 8
 9    private readonly IPlayerPrefs playerPrefs;
 10    private readonly IFriendsController friendsController;
 11    private readonly FloatVariable memoryPendingFriendRequestsRepository;
 12    private readonly FloatVariable memoryNewApprovedFriendsRepository;
 13    private readonly DataStore dataStore;
 14
 215    public FriendsNotificationPlugin(IPlayerPrefs playerPrefs,
 16        IFriendsController friendsController,
 17        FloatVariable memoryPendingFriendRequestsRepository,
 18        FloatVariable memoryNewApprovedFriendsRepository,
 19        DataStore dataStore)
 20    {
 221        this.playerPrefs = playerPrefs;
 222        this.friendsController = friendsController;
 223        this.memoryPendingFriendRequestsRepository = memoryPendingFriendRequestsRepository;
 224        this.memoryNewApprovedFriendsRepository = memoryNewApprovedFriendsRepository;
 225        this.dataStore = dataStore;
 26
 227        dataStore.friendNotifications.seenFriends.OnChange += MarkFriendsAsSeen;
 228        dataStore.friendNotifications.pendingFriendRequestCount.OnChange += UpdatePendingFriendRequests;
 229    }
 30
 31    public void Dispose()
 32    {
 233        dataStore.friendNotifications.seenFriends.OnChange -= MarkFriendsAsSeen;
 234        dataStore.friendNotifications.pendingFriendRequestCount.OnChange -= UpdatePendingFriendRequests;
 235    }
 36
 37    private void MarkFriendsAsSeen(int current, int previous)
 38    {
 139        playerPrefs.Set(PLAYER_PREFS_SEEN_FRIEND_COUNT, current);
 140        playerPrefs.Save();
 141        UpdateNewApprovedFriends();
 142    }
 43
 44    private void UpdatePendingFriendRequests(int current, int previous) =>
 145        memoryPendingFriendRequestsRepository.Set(current);
 46
 47    private void UpdateNewApprovedFriends()
 48    {
 149        var seenFriendsCount = playerPrefs.GetInt(PLAYER_PREFS_SEEN_FRIEND_COUNT);
 150        var friendsCount = friendsController.AllocatedFriendCount;
 151        var newFriends = friendsCount - seenFriendsCount;
 52
 53        //NOTE(Brian): If someone deletes you, don't show badge notification
 154        if (newFriends < 0)
 055            newFriends = 0;
 56
 157        memoryNewApprovedFriendsRepository.Set(newFriends);
 158    }
 59}