< Summary

Class:DCL.Social.Friends.ProxySocialApiBridge
Assembly:FriendsController
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/FriendsController/ProxySocialApiBridge.cs
Covered lines:32
Uncovered lines:27
Coverable lines:59
Total lines:157
Line coverage:54.2% (32 of 59)
Covered branches:0
Total branches:0
Covered methods:12
Total methods:24
Method coverage:50% (12 of 24)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ProxySocialApiBridge(...)0%110100%
add_OnIncomingFriendRequestAdded(...)0%2100%
remove_OnIncomingFriendRequestAdded(...)0%110100%
add_OnOutgoingFriendRequestAdded(...)0%2100%
remove_OnOutgoingFriendRequestAdded(...)0%110100%
add_OnFriendRequestAccepted(...)0%2100%
remove_OnFriendRequestAccepted(...)0%110100%
add_OnFriendRequestRejected(...)0%2100%
remove_OnFriendRequestRejected(...)0%110100%
add_OnFriendRequestCanceled(...)0%2100%
remove_OnFriendRequestCanceled(...)0%110100%
add_OnDeletedByFriend(...)0%2100%
remove_OnDeletedByFriend(...)0%110100%
Dispose()0%2.062075%
Initialize()0%2.032080%
GetInitializationInformationAsync(...)0%6200%
RejectFriendshipAsync(...)0%6200%
RequestFriendshipAsync(...)0%6200%
CancelFriendshipAsync(...)0%6200%
AcceptFriendshipAsync(...)0%6200%
DeleteFriendshipAsync(...)0%6200%
WaitForFeatureFlagsToBeInitialized()0%8.238084.62%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/FriendsController/ProxySocialApiBridge.cs

#LineLine coverage
 1using Cysharp.Threading.Tasks;
 2using DCL.Tasks;
 3using System;
 4using System.Threading;
 5
 6namespace DCL.Social.Friends
 7{
 8    public class ProxySocialApiBridge : ISocialApiBridge
 9    {
 10        private readonly RPCSocialApiBridge socialApiBridge;
 11        private readonly DataStore dataStore;
 12
 42313        private CancellationTokenSource lifeCycleCancellationToken = new ();
 14        private UniTaskCompletionSource featureFlagsInitializedTask;
 15
 86516        private FeatureFlag featureFlags => dataStore.featureFlags.flags.Get();
 17
 44218        private bool useSocialApiBridge => featureFlags.IsFeatureEnabled("use-social-client");
 19
 20        public event Action<FriendRequest> OnIncomingFriendRequestAdded
 21        {
 022            add => socialApiBridge.OnIncomingFriendRequestAdded += value;
 42323            remove => socialApiBridge.OnIncomingFriendRequestAdded -= value;
 24        }
 25
 26        public event Action<FriendRequest> OnOutgoingFriendRequestAdded
 27        {
 028            add => socialApiBridge.OnOutgoingFriendRequestAdded += value;
 42329            remove => socialApiBridge.OnOutgoingFriendRequestAdded -= value;
 30        }
 31
 32        public event Action<string> OnFriendRequestAccepted
 33        {
 034            add => socialApiBridge.OnFriendRequestAccepted += value;
 42335            remove => socialApiBridge.OnFriendRequestAccepted -= value;
 36        }
 37
 38        public event Action<string> OnFriendRequestRejected
 39        {
 040            add => socialApiBridge.OnFriendRequestRejected += value;
 42341            remove => socialApiBridge.OnFriendRequestRejected -= value;
 42        }
 43
 44        public event Action<string> OnFriendRequestCanceled
 45        {
 046            add => socialApiBridge.OnFriendRequestCanceled += value;
 42347            remove => socialApiBridge.OnFriendRequestCanceled -= value;
 48        }
 49
 50        public event Action<string> OnDeletedByFriend
 51        {
 052            add => socialApiBridge.OnDeletedByFriend += value;
 42353            remove => socialApiBridge.OnDeletedByFriend -= value;
 54        }
 55
 42356        public ProxySocialApiBridge(RPCSocialApiBridge socialApiBridge,
 57            DataStore dataStore)
 58        {
 42359            this.socialApiBridge = socialApiBridge;
 42360            this.dataStore = dataStore;
 42361        }
 62
 63        public void Dispose()
 64        {
 42365            lifeCycleCancellationToken.SafeCancelAndDispose();
 66
 42367            if (useSocialApiBridge)
 068                socialApiBridge.Dispose();
 42369        }
 70
 71        public void Initialize()
 72        {
 42373            lifeCycleCancellationToken = lifeCycleCancellationToken.SafeRestart();
 74
 75            void InitializeIfEnabled()
 76            {
 1977                if (useSocialApiBridge)
 078                    socialApiBridge.Initialize();
 1979            }
 80
 42381            if (featureFlags.IsInitialized)
 082                InitializeIfEnabled();
 83            else
 42384                WaitForFeatureFlagsToBeInitialized(lifeCycleCancellationToken.Token)
 85                   .ContinueWith(InitializeIfEnabled)
 86                   .Forget();
 42387        }
 88
 89        public UniTask<AllFriendsInitializationMessage> GetInitializationInformationAsync(CancellationToken cancellation
 90        {
 091            if (useSocialApiBridge)
 092                return socialApiBridge.GetInitializationInformationAsync(cancellationToken);
 93
 094            return UniTask.Never<AllFriendsInitializationMessage>(cancellationToken);
 95        }
 96
 97        public UniTask RejectFriendshipAsync(string friendId, CancellationToken cancellationToken = default)
 98        {
 099            if (useSocialApiBridge)
 0100                return socialApiBridge.RejectFriendshipAsync(friendId, cancellationToken);
 101
 0102            return UniTask.Never(cancellationToken);
 103        }
 104
 105        public UniTask<FriendRequest> RequestFriendshipAsync(string friendId, string messageBody, CancellationToken canc
 106        {
 0107            if (useSocialApiBridge)
 0108                return socialApiBridge.RequestFriendshipAsync(friendId, messageBody, cancellationToken);
 109
 0110            return UniTask.Never<FriendRequest>(cancellationToken);
 111        }
 112
 113        public UniTask CancelFriendshipAsync(string friendId, CancellationToken cancellationToken = default)
 114        {
 0115            if (useSocialApiBridge)
 0116                return socialApiBridge.CancelFriendshipAsync(friendId, cancellationToken);
 117
 0118            return UniTask.Never(cancellationToken);
 119        }
 120
 121        public UniTask AcceptFriendshipAsync(string friendId, CancellationToken cancellationToken = default)
 122        {
 0123            if (useSocialApiBridge)
 0124                return socialApiBridge.AcceptFriendshipAsync(friendId, cancellationToken);
 125
 0126            return UniTask.Never(cancellationToken);
 127        }
 128
 129        public UniTask DeleteFriendshipAsync(string friendId, CancellationToken cancellationToken = default)
 130        {
 0131            if (useSocialApiBridge)
 0132                return socialApiBridge.DeleteFriendshipAsync(friendId, cancellationToken);
 133
 0134            return UniTask.Never(cancellationToken);
 135        }
 136
 137        private async UniTask WaitForFeatureFlagsToBeInitialized(CancellationToken cancellationToken)
 138        {
 423139            if (featureFlagsInitializedTask == null)
 140            {
 423141                featureFlagsInitializedTask = new UniTaskCompletionSource();
 142
 143                void CompleteTaskAndUnsubscribe(FeatureFlag current, FeatureFlag previous)
 144                {
 59145                    dataStore.featureFlags.flags.OnChange -= CompleteTaskAndUnsubscribe;
 59146                    featureFlagsInitializedTask.TrySetResult();
 59147                }
 148
 423149                dataStore.featureFlags.flags.OnChange += CompleteTaskAndUnsubscribe;
 150            }
 151
 1269152            await featureFlagsInitializedTask.Task.AttachExternalCancellation(cancellationToken);
 57153            await UniTask.NextFrame(cancellationToken);
 19154            await UniTask.SwitchToMainThread(cancellationToken);
 19155        }
 156    }
 157}