< Summary

Class:DCL.Social.Friends.FriendsController
Assembly:FriendsController
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/FriendsController/FriendsController.cs
Covered lines:155
Uncovered lines:51
Coverable lines:206
Total lines:482
Line coverage:75.2% (155 of 206)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
FriendsController(...)0%110100%
CreateSharedInstance(...)0%110100%
Initialize(...)0%4.054085.71%
GetUserStatus(...)0%2.152066.67%
ContainsStatus(...)0%6200%
RequestFriendshipAsync()0%3.073080%
RequestFriendship(...)0%2100%
GetAllocatedFriends()0%110100%
AcceptFriendshipAsync()0%3.073080%
RejectFriendship(...)0%2100%
RejectFriendshipAsync()0%3.073080%
IsFriend(...)0%220100%
RemoveFriend(...)0%2100%
GetFriendsAsync()0%6.65060%
GetFriendsAsync()0%30500%
GetFriendRequests(...)0%2100%
GetFriendRequestsAsync()0%6.026092.31%
GetFriendsWithDirectMessages(...)0%2100%
GetFriendsWithDirectMessages(...)0%2100%
GetAllocatedFriendRequest(...)0%220100%
GetAllocatedFriendRequestByUser(...)0%550100%
GetFriendshipStatus()0%12300%
CancelRequestByUserIdAsync()0%42600%
CancelRequestByUserId(...)0%2100%
CancelRequestAsync()0%3.073080%
AcceptFriendship(...)0%2100%
FriendNotFound(...)0%6200%
AddFriendsWithDirectMessages(...)0%550100%
UpdateUserPresence(...)0%2.032080%
UpdateTotalFriendRequests(...)0%220100%
UpdateTotalFriends(...)0%110100%
UpdateUserStatus(...)0%5.585071.43%
ReceiveFriendRequest(...)0%2.062075%
HandleUpdateFriendshipStatus(...)0%330100%
UpdateFriendshipStatus(...)0%7.187084.62%
ItsAnOutdatedUpdate(...)0%220100%
ToFriendshipStatus(...)0%880100%
AddFriends(...)0%440100%
ToFriendRequest(...)0%110100%
AddFriendRequests(...)0%20400%
ToFriendshipAction(...)0%30500%

File(s)

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

#LineLine coverage
 1using Cysharp.Threading.Tasks;
 2using DCl.Social.Friends;
 3using System;
 4using System.Collections.Generic;
 5using System.Linq;
 6using System.Threading;
 7
 8namespace DCL.Social.Friends
 9{
 10    public class FriendsController : IFriendsController
 11    {
 12        // TODO: remove singleton, rename to FriendsService and add to service locator
 14813        public static FriendsController i { get; private set; }
 14
 15        private readonly IFriendsApiBridge apiBridge;
 5416        private readonly Dictionary<string, FriendRequest> friendRequests = new ();
 5417        private readonly Dictionary<string, UserStatus> friends = new ();
 18
 019        public int AllocatedFriendCount => friends.Count(f => f.Value.friendshipStatus == FriendshipStatus.FRIEND);
 620        public bool IsInitialized { get; private set; }
 21
 122        public int ReceivedRequestCount => friends.Values.Count(status => status.friendshipStatus == FriendshipStatus.RE
 23
 624        public int TotalFriendCount { get; private set; }
 125        public int TotalFriendRequestCount => TotalReceivedFriendRequestCount + TotalSentFriendRequestCount;
 3926        public int TotalReceivedFriendRequestCount { get; private set; }
 727        public int TotalSentFriendRequestCount { get; private set; }
 128        public int TotalFriendsWithDirectMessagesCount { get; private set; }
 29
 30        public event Action<string, UserStatus> OnUpdateUserStatus;
 31        public event Action<string, FriendshipAction> OnUpdateFriendship;
 32        public event Action<string> OnFriendNotFound;
 33        public event Action OnInitialized;
 34        public event Action<List<FriendWithDirectMessages>> OnAddFriendsWithDirectMessages;
 35        public event Action<int, int> OnTotalFriendRequestUpdated;
 36        public event Action<FriendRequest> OnFriendRequestReceived;
 37        public event Action<FriendRequest> OnSentFriendRequestApproved;
 38
 39        public static void CreateSharedInstance(IFriendsApiBridge apiBridge)
 40        {
 3341            i = new FriendsController(apiBridge);
 3342        }
 43
 5444        public FriendsController(IFriendsApiBridge apiBridge)
 45        {
 5446            this.apiBridge = apiBridge;
 5447            apiBridge.OnInitialized += Initialize;
 5448            apiBridge.OnFriendNotFound += FriendNotFound;
 5449            apiBridge.OnFriendWithDirectMessagesAdded += AddFriendsWithDirectMessages;
 5450            apiBridge.OnUserPresenceUpdated += UpdateUserPresence;
 5451            apiBridge.OnFriendshipStatusUpdated += HandleUpdateFriendshipStatus;
 5452            apiBridge.OnTotalFriendRequestCountUpdated += UpdateTotalFriendRequests;
 5453            apiBridge.OnTotalFriendCountUpdated += UpdateTotalFriends;
 5454            apiBridge.OnFriendRequestsAdded += AddFriendRequests; // TODO (NEW FRIEND REQUESTS): remove when we don't ne
 5455            apiBridge.OnFriendRequestReceived += ReceiveFriendRequest;
 5456        }
 57
 58        private void Initialize(FriendshipInitializationMessage msg)
 59        {
 160            if (IsInitialized) return;
 61
 162            IsInitialized = true;
 63
 164            TotalReceivedFriendRequestCount = msg.totalReceivedRequests;
 165            OnTotalFriendRequestUpdated?.Invoke(TotalReceivedFriendRequestCount, TotalSentFriendRequestCount);
 166            OnInitialized?.Invoke();
 167        }
 68
 69        public UserStatus GetUserStatus(string userId)
 70        {
 971            if (!friends.ContainsKey(userId))
 972                return new UserStatus { userId = userId, friendshipStatus = FriendshipStatus.NOT_FRIEND };
 73
 074            return friends[userId];
 75        }
 76
 77        public bool ContainsStatus(string friendId, FriendshipStatus status)
 78        {
 079            if (!friends.ContainsKey(friendId)) return false;
 080            return friends[friendId].friendshipStatus == status;
 81        }
 82
 83        public async UniTask<FriendRequest> RequestFriendshipAsync(string friendUserId, string messageBody, Cancellation
 84        {
 185            cancellationToken.ThrowIfCancellationRequested();
 86
 187            RequestFriendshipConfirmationPayload payload = await apiBridge.RequestFriendshipAsync(friendUserId, messageB
 88
 189            FriendRequestPayload friendRequestPayload = payload.friendRequest;
 90
 191            FriendRequest friendRequest = new (friendRequestPayload.friendRequestId,
 92                friendRequestPayload.timestamp,
 93                friendRequestPayload.from,
 94                friendRequestPayload.to,
 95                friendRequestPayload.messageBody);
 96
 197            friendRequests[friendRequest.FriendRequestId] = friendRequest;
 98
 199            UpdateFriendshipStatus(new FriendshipUpdateStatusMessage
 100                { action = FriendshipAction.REQUESTED_TO, userId = friendRequest.To });
 101
 1102            return friendRequest;
 1103        }
 104
 105        public void RequestFriendship(string friendUserId) =>
 0106            apiBridge.RequestFriendship(friendUserId);
 107
 108        public Dictionary<string, UserStatus> GetAllocatedFriends() =>
 1109            new (friends);
 110
 111        public async UniTask<FriendRequest> AcceptFriendshipAsync(string friendRequestId, CancellationToken cancellation
 112        {
 1113            cancellationToken.ThrowIfCancellationRequested();
 114
 1115            AcceptFriendshipPayload payload = await apiBridge.AcceptFriendshipAsync(friendRequestId, cancellationToken);
 116
 1117            FriendRequestPayload requestPayload = payload.FriendRequest;
 1118            var request = ToFriendRequest(requestPayload);
 1119            friendRequests.Remove(request.FriendRequestId);
 120
 1121            UpdateFriendshipStatus(new FriendshipUpdateStatusMessage
 122                { action = FriendshipAction.APPROVED, userId = request.From });
 123
 1124            return request;
 1125        }
 126
 127        public void RejectFriendship(string friendUserId) =>
 0128            apiBridge.RejectFriendship(friendUserId);
 129
 130        public async UniTask<FriendRequest> RejectFriendshipAsync(string friendRequestId, CancellationToken cancellation
 131        {
 1132            cancellationToken.ThrowIfCancellationRequested();
 133
 1134            RejectFriendshipPayload payload = await apiBridge.RejectFriendshipAsync(friendRequestId, cancellationToken);
 135
 1136            FriendRequestPayload requestPayload = payload.FriendRequestPayload;
 1137            var request = ToFriendRequest(requestPayload);
 1138            friendRequests.Remove(request.FriendRequestId);
 139
 1140            UpdateFriendshipStatus(new FriendshipUpdateStatusMessage
 141                { action = FriendshipAction.REJECTED, userId = request.From });
 142
 1143            return request;
 1144        }
 145
 146        public bool IsFriend(string userId) =>
 1147            friends.ContainsKey(userId) && friends[userId].friendshipStatus == FriendshipStatus.FRIEND;
 148
 149        public void RemoveFriend(string friendId) =>
 0150            apiBridge.RemoveFriend(friendId);
 151
 152        public async UniTask<string[]> GetFriendsAsync(int limit, int skip, CancellationToken cancellationToken = defaul
 153        {
 2154            var payload = await apiBridge.GetFriendsAsync(limit, skip, cancellationToken);
 2155            await UniTask.SwitchToMainThread();
 156
 2157            TotalFriendCount = payload.totalFriends;
 2158            AddFriends(payload.friends);
 159
 2160            return payload.friends;
 2161        }
 162
 163        public async UniTask<string[]> GetFriendsAsync(string usernameOrId, int limit, CancellationToken cancellationTok
 164        {
 0165            var payload = await apiBridge.GetFriendsAsync(usernameOrId, limit, cancellationToken);
 0166            await UniTask.SwitchToMainThread();
 167
 0168            TotalFriendCount = payload.totalFriends;
 0169            AddFriends(payload.friends);
 170
 0171            return payload.friends;
 0172        }
 173
 174        // TODO (NEW FRIEND REQUESTS): remove when we don't need to keep the retro-compatibility with the old version
 175        public void GetFriendRequests(int sentLimit, int sentSkip, int receivedLimit, int receivedSkip) =>
 0176            apiBridge.GetFriendRequests(sentLimit, sentSkip, receivedLimit, receivedSkip);
 177
 178        public async UniTask<List<FriendRequest>> GetFriendRequestsAsync(int sentLimit, int sentSkip, int receivedLimit,
 179        {
 2180            cancellationToken.ThrowIfCancellationRequested();
 181
 2182            var payload = await apiBridge.GetFriendRequestsAsync(sentLimit, sentSkip, receivedLimit, receivedSkip, cance
 183
 2184            TotalReceivedFriendRequestCount = payload.totalReceivedFriendRequests;
 2185            TotalSentFriendRequestCount = payload.totalSentFriendRequests;
 2186            OnTotalFriendRequestUpdated?.Invoke(TotalReceivedFriendRequestCount, TotalSentFriendRequestCount);
 187
 2188            List<FriendRequest> receivedFriendRequestsToAdd = new List<FriendRequest>();
 189
 14190            foreach (var friendRequest in payload.requestedFrom)
 191            {
 5192                cancellationToken.ThrowIfCancellationRequested();
 193
 5194                var request = ToFriendRequest(friendRequest);
 5195                friendRequests[request.FriendRequestId] = request;
 5196                receivedFriendRequestsToAdd.Add(request);
 197
 5198                UpdateFriendshipStatus(new FriendshipUpdateStatusMessage
 199                    { action = FriendshipAction.REQUESTED_FROM, userId = friendRequest.from });
 200            }
 201
 12202            foreach (var friendRequest in payload.requestedTo)
 203            {
 4204                cancellationToken.ThrowIfCancellationRequested();
 205
 4206                var request = ToFriendRequest(friendRequest);
 4207                friendRequests[request.FriendRequestId] = request;
 4208                receivedFriendRequestsToAdd.Add(request);
 209
 4210                UpdateFriendshipStatus(new FriendshipUpdateStatusMessage
 211                    { action = FriendshipAction.REQUESTED_TO, userId = friendRequest.to });
 212            }
 213
 2214            return receivedFriendRequestsToAdd;
 2215        }
 216
 217        public void GetFriendsWithDirectMessages(int limit, int skip) =>
 0218            apiBridge.GetFriendsWithDirectMessages("", limit, skip);
 219
 220        public void GetFriendsWithDirectMessages(string userNameOrId, int limit) =>
 0221            apiBridge.GetFriendsWithDirectMessages(userNameOrId, limit, 0);
 222
 223        public FriendRequest GetAllocatedFriendRequest(string friendRequestId) =>
 9224            friendRequests.ContainsKey(friendRequestId) ? friendRequests[friendRequestId] : null;
 225
 226        public FriendRequest GetAllocatedFriendRequestByUser(string userId)
 227        {
 22228            long max = long.MinValue;
 22229            FriendRequest result = null;
 230
 80231            foreach (var request in friendRequests.Values)
 232            {
 18233                if (request.From != userId && request.To != userId) continue;
 6234                if (request.Timestamp <= max) continue;
 6235                result = request;
 6236                max = request.Timestamp;
 237            }
 238
 22239            return result;
 240        }
 241
 242        public async UniTask<FriendshipStatus> GetFriendshipStatus(string userId, CancellationToken cancellationToken)
 243        {
 0244            FriendshipStatus status = await apiBridge.GetFriendshipStatus(userId, cancellationToken);
 245
 0246            UpdateFriendshipStatus(new FriendshipUpdateStatusMessage
 247            {
 248                action = ToFriendshipAction(status),
 249                userId = userId,
 250            });
 251
 0252            return status;
 0253        }
 254
 255        public async UniTask<FriendRequest> CancelRequestByUserIdAsync(string friendUserId, CancellationToken cancellati
 256        {
 0257            cancellationToken.ThrowIfCancellationRequested();
 258
 0259            FriendRequest request = GetAllocatedFriendRequestByUser(friendUserId);
 260
 0261            if (request != null)
 262            {
 0263                await apiBridge.CancelRequestAsync(request.FriendRequestId, cancellationToken);
 264
 0265                friendRequests.Remove(request.FriendRequestId);
 266
 0267                UpdateFriendshipStatus(new FriendshipUpdateStatusMessage
 268                    { action = FriendshipAction.CANCELLED, userId = friendUserId });
 269
 0270                return request;
 271            }
 272
 273            // TODO (FRIEND REQUESTS): this operation is deprecated and should be removed after the release of improved 
 0274            await apiBridge.CancelRequestByUserIdAsync(friendUserId, cancellationToken);
 275
 0276            UpdateFriendshipStatus(new FriendshipUpdateStatusMessage
 277                { action = FriendshipAction.CANCELLED, userId = friendUserId });
 278
 0279            return new FriendRequest("", 0, "", friendUserId, "");
 0280        }
 281
 282        public void CancelRequestByUserId(string friendUserId) =>
 0283            apiBridge.CancelRequestByUserId(friendUserId);
 284
 285        public async UniTask<FriendRequest> CancelRequestAsync(string friendRequestId, CancellationToken cancellationTok
 286        {
 1287            cancellationToken.ThrowIfCancellationRequested();
 288
 1289            CancelFriendshipConfirmationPayload payload = await apiBridge.CancelRequestAsync(friendRequestId, cancellati
 290
 1291            var friendRequest = ToFriendRequest(payload.friendRequest);
 1292            friendRequestId = friendRequest.FriendRequestId;
 1293            friendRequests.Remove(friendRequestId);
 294
 1295            UpdateFriendshipStatus(new FriendshipUpdateStatusMessage
 296                { action = FriendshipAction.CANCELLED, userId = friendRequest.To });
 297
 1298            return friendRequest;
 1299        }
 300
 301        public void AcceptFriendship(string friendUserId) =>
 0302            apiBridge.AcceptFriendship(friendUserId);
 303
 304        private void FriendNotFound(string name) =>
 0305            OnFriendNotFound?.Invoke(name);
 306
 307        private void AddFriendsWithDirectMessages(AddFriendsWithDirectMessagesPayload friendsWithDMs)
 308        {
 1309            TotalFriendsWithDirectMessagesCount = friendsWithDMs.totalFriendsWithDirectMessages;
 310
 4311            var friendIds = friendsWithDMs.currentFriendsWithDirectMessages.Select(messages => messages.userId);
 8312            foreach (var friendId in friendIds)
 313            {
 3314                UpdateFriendshipStatus(new FriendshipUpdateStatusMessage
 315                { action = FriendshipAction.APPROVED, userId = friendId });
 316            }
 317
 1318            OnAddFriendsWithDirectMessages?.Invoke(friendsWithDMs.currentFriendsWithDirectMessages.ToList());
 1319        }
 320
 321        private void UpdateUserPresence(UserStatus newUserStatus)
 322        {
 1323            if (!friends.ContainsKey(newUserStatus.userId)) return;
 324
 325            // Kernel doesn't send the friendship status on this call, we have to keep it or it gets defaulted
 1326            newUserStatus.friendshipStatus = friends[newUserStatus.userId].friendshipStatus;
 1327            UpdateUserStatus(newUserStatus);
 1328        }
 329
 330        private void UpdateTotalFriendRequests(UpdateTotalFriendRequestsPayload msg)
 331        {
 1332            TotalReceivedFriendRequestCount = msg.totalReceivedRequests;
 1333            TotalSentFriendRequestCount = msg.totalSentRequests;
 1334            OnTotalFriendRequestUpdated?.Invoke(TotalReceivedFriendRequestCount, TotalSentFriendRequestCount);
 1335        }
 336
 337        private void UpdateTotalFriends(UpdateTotalFriendsPayload msg)
 338        {
 1339            TotalFriendCount = msg.totalFriends;
 1340        }
 341
 342        private void UpdateUserStatus(UserStatus newUserStatus)
 343        {
 1344            if (!friends.ContainsKey(newUserStatus.userId))
 345            {
 0346                friends.Add(newUserStatus.userId, newUserStatus);
 0347                OnUpdateUserStatus?.Invoke(newUserStatus.userId, newUserStatus);
 348            }
 349            else
 350            {
 1351                if (!friends[newUserStatus.userId].Equals(newUserStatus))
 352                {
 1353                    friends[newUserStatus.userId] = newUserStatus;
 1354                    OnUpdateUserStatus?.Invoke(newUserStatus.userId, newUserStatus);
 355                }
 356            }
 1357        }
 358
 359        private void ReceiveFriendRequest(FriendRequestPayload msg)
 360        {
 2361            FriendRequest request = ToFriendRequest(msg);
 2362            friendRequests[msg.friendRequestId] = request;
 2363            OnFriendRequestReceived?.Invoke(request);
 0364        }
 365
 366        private void HandleUpdateFriendshipStatus(FriendshipUpdateStatusMessage msg)
 367        {
 13368            UpdateFriendshipStatus(msg);
 369
 13370            var friendRequest = GetAllocatedFriendRequestByUser(msg.userId);
 371
 13372            if (msg.action == FriendshipAction.APPROVED)
 3373                OnSentFriendRequestApproved?.Invoke(friendRequest);
 10374        }
 375
 376        private void UpdateFriendshipStatus(FriendshipUpdateStatusMessage msg)
 377        {
 29378            var friendshipStatus = ToFriendshipStatus(msg.action);
 29379            var userId = msg.userId;
 380
 29381            if (friends.ContainsKey(userId) && friends[userId].friendshipStatus == friendshipStatus)
 0382                return;
 383
 29384            if (!friends.ContainsKey(userId))
 25385                friends.Add(userId, new UserStatus { userId = userId });
 386
 29387            if (ItsAnOutdatedUpdate(userId, friendshipStatus))
 0388                return;
 389
 29390            friends[userId].friendshipStatus = friendshipStatus;
 391
 29392            if (friendshipStatus == FriendshipStatus.NOT_FRIEND)
 8393                friends.Remove(userId);
 394
 29395            OnUpdateFriendship?.Invoke(userId, msg.action);
 21396        }
 397
 398        private bool ItsAnOutdatedUpdate(string userId, FriendshipStatus friendshipStatus)
 399        {
 29400            return friendshipStatus == FriendshipStatus.REQUESTED_FROM
 401                   && friends[userId].friendshipStatus == FriendshipStatus.FRIEND;
 402        }
 403
 404        private static FriendshipStatus ToFriendshipStatus(FriendshipAction action)
 405        {
 406            switch (action)
 407            {
 408                case FriendshipAction.NONE:
 409                    break;
 410                case FriendshipAction.APPROVED:
 10411                    return FriendshipStatus.FRIEND;
 412                case FriendshipAction.REJECTED:
 2413                    return FriendshipStatus.NOT_FRIEND;
 414                case FriendshipAction.CANCELLED:
 2415                    return FriendshipStatus.NOT_FRIEND;
 416                case FriendshipAction.REQUESTED_FROM:
 6417                    return FriendshipStatus.REQUESTED_FROM;
 418                case FriendshipAction.REQUESTED_TO:
 8419                    return FriendshipStatus.REQUESTED_TO;
 420                case FriendshipAction.DELETED:
 3421                    return FriendshipStatus.NOT_FRIEND;
 422            }
 423
 1424            return FriendshipStatus.NOT_FRIEND;
 425        }
 426
 427        private void AddFriends(IEnumerable<string> friendIds)
 428        {
 10429            foreach (var friendId in friendIds)
 430            {
 3431                if (!friends.ContainsKey(friendId))
 3432                    friends.Add(friendId, new UserStatus { userId = friendId });
 433
 3434                friends[friendId].friendshipStatus = ToFriendshipStatus(FriendshipAction.APPROVED);
 435            }
 2436        }
 437
 438        private FriendRequest ToFriendRequest(FriendRequestPayload friendRequest) =>
 14439            new FriendRequest(
 440                friendRequest.friendRequestId,
 441                friendRequest.timestamp,
 442                friendRequest.from,
 443                friendRequest.to,
 444                friendRequest.messageBody);
 445
 446        // TODO (NEW FRIEND REQUESTS): remove when we don't need to keep the retro-compatibility with the old version
 447        private void AddFriendRequests(AddFriendRequestsPayload msg)
 448        {
 0449            TotalReceivedFriendRequestCount = msg.totalReceivedFriendRequests;
 0450            TotalSentFriendRequestCount = msg.totalSentFriendRequests;
 0451            OnTotalFriendRequestUpdated?.Invoke(TotalReceivedFriendRequestCount, TotalSentFriendRequestCount);
 452
 0453            foreach (var userId in msg.requestedFrom)
 454            {
 0455                UpdateFriendshipStatus(new FriendshipUpdateStatusMessage
 456                    { action = FriendshipAction.REQUESTED_FROM, userId = userId });
 457            }
 458
 0459            foreach (var userId in msg.requestedTo)
 460            {
 0461                UpdateFriendshipStatus(new FriendshipUpdateStatusMessage
 462                    { action = FriendshipAction.REQUESTED_TO, userId = userId });
 463            }
 0464        }
 465
 466        private FriendshipAction ToFriendshipAction(FriendshipStatus status)
 467        {
 468            switch (status)
 469            {
 470                case FriendshipStatus.FRIEND:
 0471                    return FriendshipAction.APPROVED;
 472                case FriendshipStatus.NOT_FRIEND:
 473                default:
 0474                    return FriendshipAction.NONE;
 475                case FriendshipStatus.REQUESTED_TO:
 0476                    return FriendshipAction.REQUESTED_TO;
 477                case FriendshipStatus.REQUESTED_FROM:
 0478                    return FriendshipAction.REQUESTED_FROM;
 479            }
 480        }
 481    }
 482}

Methods/Properties

i()
i(DCL.Social.Friends.FriendsController)
FriendsController(DCl.Social.Friends.IFriendsApiBridge)
AllocatedFriendCount()
IsInitialized()
IsInitialized(System.Boolean)
ReceivedRequestCount()
TotalFriendCount()
TotalFriendCount(System.Int32)
TotalFriendRequestCount()
TotalReceivedFriendRequestCount()
TotalReceivedFriendRequestCount(System.Int32)
TotalSentFriendRequestCount()
TotalSentFriendRequestCount(System.Int32)
TotalFriendsWithDirectMessagesCount()
TotalFriendsWithDirectMessagesCount(System.Int32)
CreateSharedInstance(DCl.Social.Friends.IFriendsApiBridge)
Initialize(DCL.Social.Friends.FriendshipInitializationMessage)
GetUserStatus(System.String)
ContainsStatus(System.String, DCL.Social.Friends.FriendshipStatus)
RequestFriendshipAsync()
RequestFriendship(System.String)
GetAllocatedFriends()
AcceptFriendshipAsync()
RejectFriendship(System.String)
RejectFriendshipAsync()
IsFriend(System.String)
RemoveFriend(System.String)
GetFriendsAsync()
GetFriendsAsync()
GetFriendRequests(System.Int32, System.Int32, System.Int32, System.Int32)
GetFriendRequestsAsync()
GetFriendsWithDirectMessages(System.Int32, System.Int32)
GetFriendsWithDirectMessages(System.String, System.Int32)
GetAllocatedFriendRequest(System.String)
GetAllocatedFriendRequestByUser(System.String)
GetFriendshipStatus()
CancelRequestByUserIdAsync()
CancelRequestByUserId(System.String)
CancelRequestAsync()
AcceptFriendship(System.String)
FriendNotFound(System.String)
AddFriendsWithDirectMessages(DCL.Social.Friends.AddFriendsWithDirectMessagesPayload)
UpdateUserPresence(UserStatus)
UpdateTotalFriendRequests(DCl.Social.Friends.UpdateTotalFriendRequestsPayload)
UpdateTotalFriends(DCL.Social.Friends.UpdateTotalFriendsPayload)
UpdateUserStatus(UserStatus)
ReceiveFriendRequest(DCL.Social.Friends.FriendRequestPayload)
HandleUpdateFriendshipStatus(DCL.Social.Friends.FriendshipUpdateStatusMessage)
UpdateFriendshipStatus(DCL.Social.Friends.FriendshipUpdateStatusMessage)
ItsAnOutdatedUpdate(System.String, DCL.Social.Friends.FriendshipStatus)
ToFriendshipStatus(DCL.Social.Friends.FriendshipAction)
AddFriends(System.Collections.Generic.IEnumerable[String])
ToFriendRequest(DCL.Social.Friends.FriendRequestPayload)
AddFriendRequests(DCL.Social.Friends.AddFriendRequestsPayload)
ToFriendshipAction(DCL.Social.Friends.FriendshipStatus)