< Summary

Class:DCL.Social.Passports.PassportPlayerInfoComponentController
Assembly:PassportHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/Passport/Passport/PlayerInfo/PassportPlayerInfoComponentController.cs
Covered lines:0
Uncovered lines:59
Coverable lines:59
Total lines:157
Line coverage:0% (0 of 59)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
PassportPlayerInfoComponentController(...)0%2100%
UpdateWithUserProfile(...)0%2100%
UpdateWithUserProfileAsync()0%20400%
FilterName()0%20400%
IsProfanityFilteringEnabled()0%2100%
AddPlayerAsFriend()0%6200%
RemoveFriend()0%2100%
CancelFriendRequest()0%6200%
AcceptFriendRequest()0%2100%
BlockUser()0%6200%
UnblockUser()0%6200%
ReportUser()0%2100%
WhisperUser(...)0%6200%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/Passport/Passport/PlayerInfo/PassportPlayerInfoComponentController.cs

#LineLine coverage
 1using Cysharp.Threading.Tasks;
 2using DCL.Interface;
 3using DCL.Social.Friends;
 4using SocialFeaturesAnalytics;
 5using System;
 6
 7namespace DCL.Social.Passports
 8{
 9    public class PassportPlayerInfoComponentController
 10    {
 11        private IPassportPlayerInfoComponentView view;
 12        private readonly DataStore dataStore;
 13        private readonly IProfanityFilter profanityFilter;
 14        private readonly IFriendsController friendsController;
 15        private readonly IUserProfileBridge userProfileBridge;
 16        private readonly ISocialAnalytics socialAnalytics;
 17        private readonly StringVariable currentPlayerId;
 18
 019        private UserProfile ownUserProfile => userProfileBridge.GetOwn();
 20        private string name;
 021        private bool isNewFriendRequestsEnabled => dataStore.featureFlags.flags.Get().IsFeatureEnabled("new_friend_reque
 22        public event Action OnClosePassport;
 23
 024        public PassportPlayerInfoComponentController(
 25            StringVariable currentPlayerId,
 26            IPassportPlayerInfoComponentView view,
 27            DataStore dataStore,
 28            IProfanityFilter profanityFilter,
 29            IFriendsController friendsController,
 30            IUserProfileBridge userProfileBridge,
 31            ISocialAnalytics socialAnalytics)
 32        {
 033            this.currentPlayerId = currentPlayerId;
 034            this.view = view;
 035            this.dataStore = dataStore;
 036            this.profanityFilter = profanityFilter;
 037            this.friendsController = friendsController;
 038            this.userProfileBridge = userProfileBridge;
 039            this.socialAnalytics = socialAnalytics;
 40
 041            view.OnAddFriend += AddPlayerAsFriend;
 042            view.OnRemoveFriend += RemoveFriend;
 043            view.OnCancelFriendRequest += CancelFriendRequest;
 044            view.OnAcceptFriendRequest += AcceptFriendRequest;
 045            view.OnBlockUser += BlockUser;
 046            view.OnUnblockUser += UnblockUser;
 047            view.OnReportUser += ReportUser;
 048            view.OnWhisperUser += WhisperUser;
 049        }
 50
 051        public void UpdateWithUserProfile(UserProfile userProfile) => UpdateWithUserProfileAsync(userProfile);
 52
 53        private async UniTask UpdateWithUserProfileAsync(UserProfile userProfile)
 54        {
 055            name = userProfile.name;
 056            string filteredName = await FilterName(userProfile);
 57            PlayerPassportModel playerPassportModel;
 58
 059            if(userProfile.isGuest)
 60            {
 061                playerPassportModel = new PlayerPassportModel
 62                {
 63                    name = filteredName,
 64                    isGuest = userProfile.isGuest,
 65                };
 66            }
 67            else
 68            {
 069                playerPassportModel = new PlayerPassportModel
 70                {
 71                    name = filteredName,
 72                    userId = userProfile.userId,
 73                    presenceStatus = friendsController.GetUserStatus(userProfile.userId).presence,
 74                    isGuest = userProfile.isGuest,
 75                    isBlocked = ownUserProfile.IsBlocked(userProfile.userId),
 76                    hasBlocked = userProfile.IsBlocked(ownUserProfile.userId),
 77                    friendshipStatus = friendsController.GetUserStatus(userProfile.userId).friendshipStatus
 78                };
 79            }
 080            view.SetModel(playerPassportModel);
 081        }
 82
 83        private async UniTask<string> FilterName(UserProfile userProfile)
 84        {
 085            return IsProfanityFilteringEnabled()
 86                ? await profanityFilter.Filter(userProfile.userName)
 87                : userProfile.userName;
 088        }
 89
 90        private bool IsProfanityFilteringEnabled()
 91        {
 092            return dataStore.settings.profanityChatFilteringEnabled.Get();
 93        }
 94
 95        private void AddPlayerAsFriend()
 96        {
 097            if (isNewFriendRequestsEnabled)
 098                dataStore.HUDs.sendFriendRequest.Set(currentPlayerId);
 99            else
 100            {
 0101                friendsController.RequestFriendship(currentPlayerId);
 0102                socialAnalytics.SendFriendRequestSent(ownUserProfile.userId, currentPlayerId, 0, PlayerActionSource.Pass
 103            }
 0104        }
 105
 106        private void RemoveFriend()
 107        {
 0108            friendsController.RemoveFriend(currentPlayerId);
 0109        }
 110
 111        private void CancelFriendRequest()
 112        {
 0113            if (isNewFriendRequestsEnabled)
 0114                friendsController.CancelRequestByUserIdAsync(currentPlayerId).Forget();
 115            else
 0116                friendsController.CancelRequestByUserId(currentPlayerId);
 117
 0118            socialAnalytics.SendFriendRequestCancelled(ownUserProfile.userId, currentPlayerId, PlayerActionSource.Passpo
 0119        }
 120
 121        private void AcceptFriendRequest()
 122        {
 0123            friendsController.AcceptFriendship(currentPlayerId);
 124            //socialAnalytics.SendFriendRequestApproved(ownUserProfile.userId, currentPlayerId, PlayerActionSource.Passp
 0125        }
 126
 127        private void BlockUser()
 128        {
 0129            if (ownUserProfile.IsBlocked(currentPlayerId)) return;
 0130            ownUserProfile.Block(currentPlayerId);
 0131            view.SetIsBlocked(true);
 0132            WebInterface.SendBlockPlayer(currentPlayerId);
 133            //socialAnalytics.SendPlayerBlocked(friendsController.IsFriend(currentUserProfile.userId), PlayerActionSourc
 0134        }
 135
 136        private void UnblockUser()
 137        {
 0138            if (!ownUserProfile.IsBlocked(currentPlayerId)) return;
 0139            ownUserProfile.Unblock(currentPlayerId);
 0140            view.SetIsBlocked(false);
 0141            WebInterface.SendUnblockPlayer(currentPlayerId);
 142            //socialAnalytics.SendPlayerUnblocked(friendsController.IsFriend(currentUserProfile.userId), PlayerActionSou
 0143        }
 144
 145        private void ReportUser()
 146        {
 0147            WebInterface.SendReportPlayer(currentPlayerId, name);
 148            //SocialAnalytics.SendPlayerReport(PlayerReportIssueType.None, 0, PlayerActionSource.Passport);
 0149        }
 150
 151        private void WhisperUser(string userId)
 152        {
 0153            dataStore.HUDs.openPrivateChat.Set(userId);
 0154            OnClosePassport?.Invoke();
 0155        }
 156    }
 157}