< 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:58
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;
 3
 4public class FriendsNotificationPlugin : IPlugin
 5{
 6    private const string PLAYER_PREFS_SEEN_FRIEND_COUNT = "SeenFriendsCount";
 7
 8    private readonly IPlayerPrefs playerPrefs;
 9    private readonly IFriendsController friendsController;
 10    private readonly FloatVariable memoryPendingFriendRequestsRepository;
 11    private readonly FloatVariable memoryNewApprovedFriendsRepository;
 12    private readonly DataStore dataStore;
 13
 214    public FriendsNotificationPlugin(IPlayerPrefs playerPrefs,
 15        IFriendsController friendsController,
 16        FloatVariable memoryPendingFriendRequestsRepository,
 17        FloatVariable memoryNewApprovedFriendsRepository,
 18        DataStore dataStore)
 19    {
 220        this.playerPrefs = playerPrefs;
 221        this.friendsController = friendsController;
 222        this.memoryPendingFriendRequestsRepository = memoryPendingFriendRequestsRepository;
 223        this.memoryNewApprovedFriendsRepository = memoryNewApprovedFriendsRepository;
 224        this.dataStore = dataStore;
 25
 226        dataStore.friendNotifications.seenFriends.OnChange += MarkFriendsAsSeen;
 227        dataStore.friendNotifications.pendingFriendRequestCount.OnChange += UpdatePendingFriendRequests;
 228    }
 29
 30    public void Dispose()
 31    {
 232        dataStore.friendNotifications.seenFriends.OnChange -= MarkFriendsAsSeen;
 233        dataStore.friendNotifications.pendingFriendRequestCount.OnChange -= UpdatePendingFriendRequests;
 234    }
 35
 36    private void MarkFriendsAsSeen(int current, int previous)
 37    {
 138        playerPrefs.Set(PLAYER_PREFS_SEEN_FRIEND_COUNT, current);
 139        playerPrefs.Save();
 140        UpdateNewApprovedFriends();
 141    }
 42
 43    private void UpdatePendingFriendRequests(int current, int previous) =>
 144        memoryPendingFriendRequestsRepository.Set(current);
 45
 46    private void UpdateNewApprovedFriends()
 47    {
 148        var seenFriendsCount = playerPrefs.GetInt(PLAYER_PREFS_SEEN_FRIEND_COUNT);
 149        var friendsCount = friendsController.AllocatedFriendCount;
 150        var newFriends = friendsCount - seenFriendsCount;
 51
 52        //NOTE(Brian): If someone deletes you, don't show badge notification
 153        if (newFriends < 0)
 054            newFriends = 0;
 55
 156        memoryNewApprovedFriendsRepository.Set(newFriends);
 157    }
 58}