< Summary

Class:DCL.Social.Friends.WebInterfaceFriendsApiBridge
Assembly:FriendsController
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/FriendsController/WebInterfaceFriendsApiBridge.cs
/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/FriendsController/WebInterfaceFriendsApiBridgeUtilies.cs
Covered lines:0
Uncovered lines:102
Coverable lines:102
Total lines:320
Line coverage:0% (0 of 102)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
WebInterfaceFriendsApiBridge()0%2100%
InitializeFriends(...)0%6200%
FriendNotFound(...)0%6200%
AddFriends(...)0%6200%
AddFriendRequests(...)0%6200%
AddFriendRequest(...)0%6200%
AddFriendsWithDirectMessages(...)0%6200%
UpdateUserPresence(...)0%6200%
UpdateFriendshipStatus(...)0%12300%
UpdateTotalFriendRequests(...)0%6200%
UpdateTotalFriends(...)0%6200%
RequestFriendshipConfirmation(...)0%6200%
RequestFriendshipError(...)0%6200%
CancelFriendshipConfirmation(...)0%12300%
CancelFriendshipError(...)0%6200%
RejectFriendship(...)0%2100%
RejectFriendshipAsync(...)0%2100%
RemoveFriend(...)0%2100%
GetFriendsAsync(...)0%2100%
GetFriendsAsync(...)0%2100%
GetFriendRequests(...)0%2100%
GetFriendRequestsAsync(...)0%2100%
GetFriendsWithDirectMessages(...)0%2100%
RequestFriendship(...)0%2100%
RequestFriendshipAsync(...)0%2100%
CancelRequestAsync(...)0%2100%
CancelRequestByUserIdAsync(...)0%6200%
CancelRequestByUserId(...)0%2100%
AcceptFriendship(...)0%2100%
AcceptFriendshipAsync(...)0%2100%
GetFriendshipStatus(...)0%2100%
ForceInitialization()0%2100%

File(s)

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

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using Cysharp.Threading.Tasks;
 4using DCL.Interface;
 5using DCl.Social.Friends;
 6using JetBrains.Annotations;
 7using System.Threading;
 8using UnityEngine;
 9using System.Threading;
 10
 11namespace DCL.Social.Friends
 12{
 13    public partial class WebInterfaceFriendsApiBridge : MonoBehaviour, IFriendsApiBridge
 14    {
 15        private const string GET_FRIENDS_REQUEST_MESSAGE_ID = "GetFriendsRequest";
 16
 017        private readonly Dictionary<string, IUniTaskSource> pendingRequests = new ();
 018        private readonly Dictionary<string, UniTaskCompletionSource<FriendshipUpdateStatusMessage>> updatedFriendshipPen
 19
 20        public event Action<FriendshipInitializationMessage> OnInitialized;
 21        public event Action<string> OnFriendNotFound;
 22        public event Action<AddFriendRequestsPayload> OnFriendRequestsAdded; // TODO (NEW FRIEND REQUESTS): remove when 
 23        public event Action<AddFriendsWithDirectMessagesPayload> OnFriendWithDirectMessagesAdded;
 24        public event Action<UserStatus> OnUserPresenceUpdated;
 25        public event Action<FriendshipUpdateStatusMessage> OnFriendshipStatusUpdated;
 26        public event Action<UpdateTotalFriendRequestsPayload> OnTotalFriendRequestCountUpdated;
 27        public event Action<UpdateTotalFriendsPayload> OnTotalFriendCountUpdated;
 28        public event Action<FriendRequestPayload> OnFriendRequestReceived;
 29
 30        [PublicAPI]
 31        public void InitializeFriends(string json) =>
 032            OnInitialized?.Invoke(JsonUtility.FromJson<FriendshipInitializationMessage>(json));
 33
 34        [PublicAPI]
 35        public void FriendNotFound(string name) =>
 036            OnFriendNotFound?.Invoke(name);
 37
 38        [PublicAPI]
 39        public void AddFriends(string json)
 40        {
 041            var payload = JsonUtility.FromJson<AddFriendsPayload>(json);
 042            string messageId = GET_FRIENDS_REQUEST_MESSAGE_ID;
 043            if (!pendingRequests.ContainsKey(messageId))
 044                return;
 45
 046            var task = (UniTaskCompletionSource<AddFriendsPayload>)pendingRequests[messageId];
 47
 048            pendingRequests.Remove(messageId);
 049            task.TrySetResult(payload);
 050        }
 51
 52        // TODO (NEW FRIEND REQUESTS): remove when we don't need to keep the retro-compatibility with the old version
 53        [PublicAPI]
 54        public void AddFriendRequests(string json) =>
 055            OnFriendRequestsAdded?.Invoke(JsonUtility.FromJson<AddFriendRequestsPayload>(json));
 56
 57        [PublicAPI]
 58        public void AddFriendRequest(string json)
 59        {
 060            var payload = JsonUtility.FromJson<FriendRequestPayload>(json);
 061            OnFriendRequestReceived?.Invoke(payload);
 062        }
 63
 64        [PublicAPI]
 65        public void AddFriendsWithDirectMessages(string json) =>
 066            OnFriendWithDirectMessagesAdded?.Invoke(JsonUtility.FromJson<AddFriendsWithDirectMessagesPayload>(json));
 67
 68        [PublicAPI]
 69        public void UpdateUserPresence(string json) =>
 070            OnUserPresenceUpdated?.Invoke(JsonUtility.FromJson<UserStatus>(json));
 71
 72        [PublicAPI]
 73        public void UpdateFriendshipStatus(string json)
 74        {
 075            FriendshipUpdateStatusMessage msg = JsonUtility.FromJson<FriendshipUpdateStatusMessage>(json);
 076            string userId = msg.userId;
 77
 078            if (updatedFriendshipPendingRequests.ContainsKey(userId))
 079                updatedFriendshipPendingRequests[userId].TrySetResult(msg);
 80
 081            updatedFriendshipPendingRequests.Remove(userId);
 82
 083            OnFriendshipStatusUpdated?.Invoke(msg);
 084        }
 85
 86        [PublicAPI]
 87        public void UpdateTotalFriendRequests(string json) =>
 088            OnTotalFriendRequestCountUpdated?.Invoke(JsonUtility.FromJson<UpdateTotalFriendRequestsPayload>(json));
 89
 90        [PublicAPI]
 91        public void UpdateTotalFriends(string json) =>
 092            OnTotalFriendCountUpdated?.Invoke(JsonUtility.FromJson<UpdateTotalFriendsPayload>(json));
 93
 94        [PublicAPI]
 95        public void RequestFriendshipConfirmation(string json)
 96        {
 097            var payload = JsonUtility.FromJson<RequestFriendshipConfirmationPayload>(json);
 098            var messageId = payload.messageId;
 099            if (!pendingRequests.ContainsKey(messageId)) return;
 100
 0101            var task = (UniTaskCompletionSource<RequestFriendshipConfirmationPayload>)pendingRequests[messageId];
 102
 0103            pendingRequests.Remove(messageId);
 0104            task.TrySetResult(payload);
 0105        }
 106
 107        [PublicAPI]
 108        public void RequestFriendshipError(string json)
 109        {
 0110            var payload = JsonUtility.FromJson<RequestFriendshipErrorPayload>(json);
 0111            var messageId = payload.messageId;
 0112            if (!pendingRequests.ContainsKey(messageId)) return;
 113
 0114            var task = (UniTaskCompletionSource<RequestFriendshipConfirmationPayload>)pendingRequests[messageId];
 115
 0116            pendingRequests.Remove(messageId);
 0117            task.TrySetException(new FriendshipException((FriendRequestErrorCodes)payload.errorCode));
 0118        }
 119
 120        [PublicAPI]
 121        public void CancelFriendshipConfirmation(string json)
 122        {
 0123            var payload = JsonUtility.FromJson<CancelFriendshipConfirmationPayload>(json);
 0124            string messageId = payload.messageId;
 0125            if (!pendingRequests.ContainsKey(messageId)) return;
 126
 0127            var task = (UniTaskCompletionSource<CancelFriendshipConfirmationPayload>)pendingRequests[messageId];
 128
 0129            pendingRequests.Remove(messageId);
 0130            task.TrySetResult(payload);
 131
 0132            OnFriendshipStatusUpdated?.Invoke(new FriendshipUpdateStatusMessage
 133            {
 134                action = FriendshipAction.CANCELLED,
 135                userId = payload.friendRequest.to
 136            });
 0137        }
 138
 139        [PublicAPI]
 140        public void CancelFriendshipError(string json)
 141        {
 0142            var payload = JsonUtility.FromJson<CancelFriendshipErrorPayload>(json);
 0143            var messageId = payload.messageId;
 0144            if (!pendingRequests.ContainsKey(messageId)) return;
 145
 0146            var task = (UniTaskCompletionSource<CancelFriendshipConfirmationPayload>)pendingRequests[messageId];
 147
 0148            pendingRequests.Remove(messageId);
 0149            task.TrySetException(new FriendshipException((FriendRequestErrorCodes)payload.errorCode));
 0150        }
 151
 152        public void RejectFriendship(string userId)
 153        {
 0154            WebInterface.UpdateFriendshipStatus(new WebInterface.FriendshipUpdateStatusMessage
 155            {
 156                action = WebInterface.FriendshipAction.REJECTED,
 157                userId = userId
 158            });
 0159        }
 160
 161        public UniTask<RejectFriendshipPayload> RejectFriendshipAsync(string friendRequestId, CancellationToken cancella
 0162            throw new NotImplementedException("Already implemented in RPCFriendsApiBridge");
 163
 164        public void RemoveFriend(string userId)
 165        {
 0166            WebInterface.UpdateFriendshipStatus(new WebInterface.FriendshipUpdateStatusMessage
 167            {
 168                action = WebInterface.FriendshipAction.DELETED,
 169                userId = userId
 170            });
 0171        }
 172
 173        public UniTask<AddFriendsPayload> GetFriendsAsync(int limit, int skip, CancellationToken cancellationToken = def
 174        {
 0175            cancellationToken.ThrowIfCancellationRequested();
 176
 0177            var task = new UniTaskCompletionSource<AddFriendsPayload>();
 178
 0179            pendingRequests[GET_FRIENDS_REQUEST_MESSAGE_ID] = task;
 0180            WebInterface.GetFriends(limit, skip);
 181
 0182            return task.Task.AttachExternalCancellation(cancellationToken);
 183        }
 184
 185        public UniTask<AddFriendsPayload> GetFriendsAsync(string usernameOrId, int limit, CancellationToken cancellation
 186        {
 0187            cancellationToken.ThrowIfCancellationRequested();
 188
 0189            var task = new UniTaskCompletionSource<AddFriendsPayload>();
 190
 0191            pendingRequests[GET_FRIENDS_REQUEST_MESSAGE_ID] = task;
 0192            WebInterface.GetFriends(usernameOrId, limit);
 193
 0194            return task.Task.AttachExternalCancellation(cancellationToken);
 195        }
 196
 197        // TODO (NEW FRIEND REQUESTS): remove when we don't need to keep the retro-compatibility with the old version
 198        public void GetFriendRequests(int sentLimit, int sentSkip, int receivedLimit, int receivedSkip)
 199        {
 0200            WebInterface.SendMessage("GetFriendRequests", new GetFriendRequestsPayload
 201            {
 202                receivedSkip = receivedSkip,
 203                receivedLimit = receivedLimit,
 204                sentSkip = sentSkip,
 205                sentLimit = sentLimit
 206            });
 0207        }
 208
 209        public UniTask<AddFriendRequestsV2Payload> GetFriendRequestsAsync(int sentLimit, int sentSkip, int receivedLimit
 0210            throw new NotImplementedException("Already implemented in RPCFriendsApiBridge");
 211
 212        public void GetFriendsWithDirectMessages(string usernameOrId, int limit, int skip) =>
 0213            WebInterface.GetFriendsWithDirectMessages(usernameOrId, limit, skip);
 214
 215        public void RequestFriendship(string friendUserId)
 216        {
 0217            WebInterface.UpdateFriendshipStatus(new WebInterface.FriendshipUpdateStatusMessage
 218            {
 219                action = WebInterface.FriendshipAction.REQUESTED_TO,
 220                userId = friendUserId,
 221            });
 0222        }
 223
 224        public UniTask<RequestFriendshipConfirmationPayload> RequestFriendshipAsync(string userId, string messageBody, C
 225        {
 0226            cancellationToken.ThrowIfCancellationRequested();
 227
 0228            var task = new UniTaskCompletionSource<RequestFriendshipConfirmationPayload>();
 229
 230            // TODO: optimize unique id length for performance reasons
 0231            var messageId = Guid.NewGuid().ToString("N");
 0232            pendingRequests[messageId] = task;
 233
 0234            WebInterface.SendMessage("RequestFriendship", new RequestFriendshipPayload
 235            {
 236                messageId = messageId,
 237                messageBody = messageBody,
 238                userId = userId
 239            });
 240
 0241            return task.Task.AttachExternalCancellation(cancellationToken);
 242        }
 243
 244        public UniTask<CancelFriendshipConfirmationPayload> CancelRequestAsync(string friendRequestId, CancellationToken
 245        {
 0246            cancellationToken.ThrowIfCancellationRequested();
 247
 0248            var task = new UniTaskCompletionSource<CancelFriendshipConfirmationPayload>();
 249
 250            // TODO: optimize unique id length for performance reasons
 0251            var messageId = Guid.NewGuid().ToString("N");
 0252            pendingRequests[messageId] = task;
 253
 0254            WebInterface.SendMessage("CancelFriendship",
 255                new CancelFriendshipPayload
 256                {
 257                    messageId = messageId,
 258                    friendRequestId = friendRequestId
 259                });
 260
 0261            return task.Task.AttachExternalCancellation(cancellationToken);
 262        }
 263
 264        public UniTask CancelRequestByUserIdAsync(string userId, CancellationToken cancellationToken)
 265        {
 0266            cancellationToken.ThrowIfCancellationRequested();
 267
 0268            var task = updatedFriendshipPendingRequests.ContainsKey(userId)
 269                ? updatedFriendshipPendingRequests[userId]
 270                : new UniTaskCompletionSource<FriendshipUpdateStatusMessage>();
 271
 0272            updatedFriendshipPendingRequests[userId] = task;
 273
 0274            WebInterface.UpdateFriendshipStatus(new WebInterface.FriendshipUpdateStatusMessage
 275            {
 276                userId = userId,
 277                action = WebInterface.FriendshipAction.CANCELLED
 278            });
 279
 0280            return task.Task.AttachExternalCancellation(cancellationToken);
 281        }
 282
 283        public void CancelRequestByUserId(string userId)
 284        {
 0285            WebInterface.UpdateFriendshipStatus(new WebInterface.FriendshipUpdateStatusMessage
 286            {
 287                userId = userId,
 288                action = WebInterface.FriendshipAction.CANCELLED
 289            });
 0290        }
 291
 292        public void AcceptFriendship(string userId)
 293        {
 0294            WebInterface.UpdateFriendshipStatus(new WebInterface.FriendshipUpdateStatusMessage
 295            {
 296                userId = userId,
 297                action = WebInterface.FriendshipAction.APPROVED
 298            });
 0299        }
 300
 301        public UniTask<AcceptFriendshipPayload> AcceptFriendshipAsync(string friendRequestId, CancellationToken cancella
 0302            throw new NotImplementedException("Already implemented in RPCFriendsApiBridge");
 303
 304        public UniTask<FriendshipStatus> GetFriendshipStatus(string userId, CancellationToken cancellationToken) =>
 0305            throw new NotImplementedException("Already implemented in RPCFriendsApiBridge");
 306    }
 307}

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

#LineLine coverage
 1using UnityEngine;
 2
 3namespace DCL.Social.Friends
 4{
 5    public partial class WebInterfaceFriendsApiBridge
 6    {
 7        [ContextMenu("Force initialization")]
 8        public void ForceInitialization()
 9        {
 010            InitializeFriends(JsonUtility.ToJson(new FriendshipInitializationMessage()));
 011        }
 12    }
 13}

Methods/Properties

WebInterfaceFriendsApiBridge()
InitializeFriends(System.String)
FriendNotFound(System.String)
AddFriends(System.String)
AddFriendRequests(System.String)
AddFriendRequest(System.String)
AddFriendsWithDirectMessages(System.String)
UpdateUserPresence(System.String)
UpdateFriendshipStatus(System.String)
UpdateTotalFriendRequests(System.String)
UpdateTotalFriends(System.String)
RequestFriendshipConfirmation(System.String)
RequestFriendshipError(System.String)
CancelFriendshipConfirmation(System.String)
CancelFriendshipError(System.String)
RejectFriendship(System.String)
RejectFriendshipAsync(System.String, System.Threading.CancellationToken)
RemoveFriend(System.String)
GetFriendsAsync(System.Int32, System.Int32, System.Threading.CancellationToken)
GetFriendsAsync(System.String, System.Int32, System.Threading.CancellationToken)
GetFriendRequests(System.Int32, System.Int32, System.Int32, System.Int32)
GetFriendRequestsAsync(System.Int32, System.Int32, System.Int32, System.Int32, System.Threading.CancellationToken)
GetFriendsWithDirectMessages(System.String, System.Int32, System.Int32)
RequestFriendship(System.String)
RequestFriendshipAsync(System.String, System.String, System.Threading.CancellationToken)
CancelRequestAsync(System.String, System.Threading.CancellationToken)
CancelRequestByUserIdAsync(System.String, System.Threading.CancellationToken)
CancelRequestByUserId(System.String)
AcceptFriendship(System.String)
AcceptFriendshipAsync(System.String, System.Threading.CancellationToken)
GetFriendshipStatus(System.String, System.Threading.CancellationToken)
ForceInitialization()