< Summary

Class:SocialFeaturesAnalytics.SocialAnalytics
Assembly:SocialAnalytics
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Analytics/SocialAnalytics/SocialAnalytics.cs
Covered lines:6
Uncovered lines:164
Coverable lines:170
Total lines:549
Line coverage:3.5% (6 of 170)
Covered branches:0
Total branches:0
Covered methods:3
Total methods:41
Method coverage:7.3% (3 of 41)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SocialAnalytics(...)0%220100%
SendPlayerMuted(...)0%6200%
SendPlayerUnmuted(...)0%6200%
SendVoiceMessageStartedByFirstTime()0%2100%
SendVoiceMessage(...)0%6200%
SendVoiceChannelConnection(...)0%2100%
SendVoiceChannelDisconnection()0%2100%
SendClickedOnCollectibles()0%2100%
SendStartedConversation(...)0%2100%
SendNftBuy(...)0%2100%
SendInspectAvatar(...)0%2100%
SendLinkClick(...)0%2100%
SendCopyWallet(...)0%2100%
SendCopyUsername(...)0%2100%
SendJumpInToPlayer(...)0%2100%
SendProfileEdit(...)0%2100%
SendVoiceChatPreferencesChanged(...)0%2100%
SendFriendRequestError(...)0%2100%
SendFriendRequestSent(...)0%30500%
SendFriendRequestApproved(...)0%30500%
SendFriendRequestRejected(...)0%30500%
SendFriendRequestCancelled(...)0%12300%
SendFriendDeleted(...)0%12300%
SendMessageWithMention(...)0%2100%
SendClickedMention(...)0%2100%
SendMentionCreated(...)0%2100%
SendPassportOpen(...)0%2100%
SendPassportClose(...)0%2100%
SendPlayerBlocked(...)0%2100%
SendPlayerUnblocked(...)0%2100%
SendPlayerReport(...)0%2100%
SendPlayerJoin(...)0%2100%
SendPlayEmote(...)0%2100%
SendEmptyChannelCreated(...)0%30500%
SendPopulatedChannelJoined(...)0%42600%
SendLeaveChannel(...)0%42600%
SendChannelSearch(...)0%2100%
SendChannelLinkClicked(...)0%72800%
GetPlayerTypeByUserId(...)0%30500%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Analytics/SocialAnalytics/SocialAnalytics.cs

#LineLine coverage
 1using DCL;
 2using System.Collections.Generic;
 3using static DCL.SettingsCommon.GeneralSettings;
 4
 5namespace SocialFeaturesAnalytics
 6{
 7    public class SocialAnalytics : ISocialAnalytics
 8    {
 9        private const string PLAYER_MUTED = "user_muted";
 10        private const string PLAYER_UNMUTED = "user_unmuted";
 11        private const string VOICE_MESSAGE_STARTED_BY_FIRST_TIME = "voice_chat_start_recording";
 12        private const string VOICE_MESSAGE_SENT = "voice_message_sent";
 13        private const string VOICE_CHANNEL_CONNECTION = "voice_channel_connection";
 14        private const string VOICE_CHANNEL_DISCONNECTION = "voice_channel_disconnection";
 15        private const string VOICE_CHAT_PREFERENCES_CHANGED = "voice_chat_preferences_changed";
 16        private const string FRIEND_REQUEST_SENT = "friend_request_sent";
 17        private const string FRIEND_REQUEST_APPROVED = "friend_request_approved";
 18        private const string FRIEND_REQUEST_REJECTED = "friend_request_rejected";
 19        private const string FRIEND_REQUEST_CANCELLED = "friend_request_cancelled";
 20        private const string FRIEND_REQUEST_ERROR = "friend_request_error";
 21        private const string FRIEND_DELETED = "friend_deleted";
 22        private const string PASSPORT_OPENED = "passport_opened";
 23        private const string PASSPORT_CLOSED = "passport_closed";
 24        private const string PASSPORT_CLICKED_ON_COLLECTIONS = "passport_collections_click";
 25        private const string PASSPORT_STARTED_CONVERSATION = "passport_started_conversation";
 26        private const string PASSPORT_INSPECT_AVATAR = "passport_inspect_avatar";
 27        private const string PASSPORT_CLICK_LINK = "passport_clicked_link";
 28        private const string PASSPORT_WALLET_COPY = "passport_wallet_copy";
 29        private const string PASSPORT_USERNAME_COPY = "passport_username_copy";
 30        private const string PASSPORT_JUMP_IN = "passport_jump_in";
 31        private const string PASSPORT_EDIT_PROFILE = "passport_edit_profile";
 32        private const string PASSPORT_BUY_NFT = "passport_buy_nft";
 33        private const string PLAYER_BLOCKED = "user_blocked";
 34        private const string PLAYER_UNBLOCKED = "user_unblocked";
 35        private const string PLAYER_REPORT = "player_report";
 36        private const string PLAYER_JOIN = "player_join";
 37        private const string PLAY_EMOTE = "used_emote";
 38        private const string EMPTY_CHANNEL_CREATED = "chat_channel_created";
 39        private const string POPULATED_CHANNEL_JOINED = "player_joins_channel";
 40        private const string CHANNEL_LEAVE = "player_leaves_channel";
 41        private const string CHANNEL_SEARCH = "player_search_channel";
 42        private const string CHANNEL_LINK_CLICK = "player_clicks_channel_link";
 43        private const string MENTION_MESSAGE_SENT = "mention_message_sent";
 44        private const string MENTION_CLICKED = "mention_clicked";
 45        private const string MENTION_CREATED = "mention_created";
 46
 31047        public static SocialAnalytics i { get; private set; }
 48
 49        private readonly IAnalytics analytics;
 50        private readonly IUserProfileBridge userProfileBridge;
 51
 30952        public SocialAnalytics(IAnalytics analytics, IUserProfileBridge userProfileBridge)
 53        {
 30954            this.analytics = analytics;
 30955            this.userProfileBridge = userProfileBridge;
 30956            i ??= this;
 30957        }
 58
 59        public void SendPlayerMuted(string toUserId)
 60        {
 061            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 62
 063            if (toPlayerType == null)
 064                return;
 65
 066            Dictionary<string, string> data = new Dictionary<string, string>
 67                { { "to", toPlayerType.ToString() } };
 68
 069            analytics.SendAnalytic(PLAYER_MUTED, data);
 070        }
 71
 72        public void SendPlayerUnmuted(string toUserId)
 73        {
 074            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 75
 076            if (toPlayerType == null)
 077                return;
 78
 079            Dictionary<string, string> data = new Dictionary<string, string>
 80                { { "to", toPlayerType.ToString() } };
 81
 082            analytics.SendAnalytic(PLAYER_UNMUTED, data);
 083        }
 84
 85        public void SendVoiceMessageStartedByFirstTime()
 86        {
 087            analytics.SendAnalytic(VOICE_MESSAGE_STARTED_BY_FIRST_TIME, new Dictionary<string, string>());
 088        }
 89
 90        public void SendVoiceMessage(double messageLength, VoiceMessageSource source, string fromUserId)
 91        {
 092            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 93
 094            if (fromPlayerType == null)
 095                return;
 96
 097            Dictionary<string, string> data = new Dictionary<string, string>
 98            {
 99                { "from", fromPlayerType.ToString() },
 100                { "length", messageLength.ToString() },
 101                { "source", source.ToString() },
 102            };
 103
 0104            analytics.SendAnalytic(VOICE_MESSAGE_SENT, data);
 0105        }
 106
 107        public void SendVoiceChannelConnection(int numberOfPeers)
 108        {
 0109            Dictionary<string, string> data = new Dictionary<string, string>
 110                { { "numberOfPeers", numberOfPeers.ToString() } };
 111
 0112            analytics.SendAnalytic(VOICE_CHANNEL_CONNECTION, data);
 0113        }
 114
 115        public void SendVoiceChannelDisconnection()
 116        {
 0117            analytics.SendAnalytic(VOICE_CHANNEL_DISCONNECTION, new Dictionary<string, string>());
 0118        }
 119
 120        public void SendClickedOnCollectibles()
 121        {
 0122            analytics.SendAnalytic(PASSPORT_CLICKED_ON_COLLECTIONS, new Dictionary<string, string>());
 0123        }
 124
 125        public void SendStartedConversation(PlayerActionSource source, string recipientId)
 126        {
 0127            Dictionary<string, string> data = new Dictionary<string, string>
 128            {
 129                { "source", source.ToString() },
 130                { "receiver_wallet_id", recipientId },
 131            };
 132
 0133            analytics.SendAnalytic(PASSPORT_STARTED_CONVERSATION, data);
 0134        }
 135
 136        public void SendNftBuy(PlayerActionSource source)
 137        {
 0138            Dictionary<string, string> data = new Dictionary<string, string>
 139                { { "source", source.ToString() } };
 140
 0141            analytics.SendAnalytic(PASSPORT_BUY_NFT, data);
 0142        }
 143
 144        public void SendInspectAvatar(double timeSpent)
 145        {
 0146            Dictionary<string, string> data = new Dictionary<string, string>
 147                { { "timeSpent", timeSpent.ToString() } };
 148
 0149            analytics.SendAnalytic(PASSPORT_INSPECT_AVATAR, data);
 0150        }
 151
 152        public void SendLinkClick(PlayerActionSource source)
 153        {
 0154            Dictionary<string, string> data = new Dictionary<string, string>
 155                { { "source", source.ToString() } };
 156
 0157            analytics.SendAnalytic(PASSPORT_CLICK_LINK, data);
 0158        }
 159
 160        public void SendCopyWallet(PlayerActionSource source)
 161        {
 0162            Dictionary<string, string> data = new Dictionary<string, string>
 163                { { "source", source.ToString() } };
 164
 0165            analytics.SendAnalytic(PASSPORT_WALLET_COPY, data);
 0166        }
 167
 168        public void SendCopyUsername(PlayerActionSource source)
 169        {
 0170            Dictionary<string, string> data = new Dictionary<string, string>
 171                { { "source", source.ToString() } };
 172
 0173            analytics.SendAnalytic(PASSPORT_USERNAME_COPY, data);
 0174        }
 175
 176        public void SendJumpInToPlayer(PlayerActionSource source, string recipientId)
 177        {
 0178            Dictionary<string, string> data = new Dictionary<string, string>
 179            {
 180                { "source", source.ToString() },
 181                { "receiver_wallet_id", recipientId },
 182            };
 183
 0184            analytics.SendAnalytic(PASSPORT_JUMP_IN, data);
 0185        }
 186
 187        public void SendProfileEdit(int descriptionLength, bool hasLinks, PlayerActionSource source, ProfileField fieldC
 188        {
 0189            var data = new Dictionary<string, string>
 190            {
 191                { "source", source.ToString() },
 192                { "descriptionLength", descriptionLength.ToString() },
 193                { "hasLinks", hasLinks.ToString() },
 194                { "field", fieldChanged.ToString() },
 195            };
 196
 0197            analytics.SendAnalytic(PASSPORT_EDIT_PROFILE, data);
 0198        }
 199
 200        public void SendVoiceChatPreferencesChanged(VoiceChatAllow preference)
 201        {
 0202            Dictionary<string, string> data = new Dictionary<string, string>
 203                { { "allow", preference.ToString() } };
 204
 0205            analytics.SendAnalytic(VOICE_CHAT_PREFERENCES_CHANGED, data);
 0206        }
 207
 208        public void SendFriendRequestError(string senderId, string recipientId, string source, string errorDescription, 
 209        {
 0210            var data = new Dictionary<string, string>
 211            {
 212                { "source", source },
 213                { "description", errorDescription },
 214                { "senderId", senderId },
 215                { "receiverId", recipientId },
 216                { "friendRequestId", friendRequestId },
 217            };
 218
 0219            analytics.SendAnalytic(FRIEND_REQUEST_ERROR, data);
 0220        }
 221
 222        public void SendFriendRequestSent(string fromUserId, string toUserId, double messageLength, PlayerActionSource s
 223        {
 0224            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0225            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 226
 0227            if (fromPlayerType == null || toPlayerType == null)
 0228                return;
 229
 0230            Dictionary<string, string> data = new Dictionary<string, string>
 231            {
 232                { "from", fromPlayerType.ToString() },
 233                { "to ", toPlayerType.ToString() },
 234
 235                // TODO (FRIEND REQUESTS): retro-compatibility, remove this param in the future
 236                { "text_length", messageLength.ToString() },
 237                { "attached_message_length", messageLength.ToString() },
 238                { "attached_message", messageLength > 0 ? "true" : "false" },
 239                { "source", source.ToString() },
 240                { "senderId", fromUserId },
 241                { "receiverId", toUserId },
 242                { "friendRequestId", friendRequestId },
 243            };
 244
 0245            analytics.SendAnalytic(FRIEND_REQUEST_SENT, data);
 0246        }
 247
 248        public void SendFriendRequestApproved(string fromUserId, string toUserId, string source, bool hasBodyMessage, st
 249        {
 0250            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0251            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 252
 0253            if (fromPlayerType == null || toPlayerType == null)
 0254                return;
 255
 0256            Dictionary<string, string> data = new Dictionary<string, string>
 257            {
 258                { "from", fromPlayerType.ToString() },
 259                { "to", toPlayerType.ToString() },
 260                { "source", source },
 261                { "has_body_message", hasBodyMessage ? "true" : "false" },
 262                { "friendRequestId", friendRequestId },
 263                { "senderId", fromUserId },
 264                { "receiverId", toUserId },
 265            };
 266
 0267            analytics.SendAnalytic(FRIEND_REQUEST_APPROVED, data);
 0268        }
 269
 270        public void SendFriendRequestRejected(string fromUserId, string toUserId, string source, bool hasBodyMessage, st
 271        {
 0272            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0273            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 274
 0275            if (fromPlayerType == null || toPlayerType == null)
 0276                return;
 277
 0278            Dictionary<string, string> data = new Dictionary<string, string>
 279            {
 280                { "from", fromPlayerType.ToString() },
 281                { "to", toPlayerType.ToString() },
 282                { "source", source },
 283                { "has_body_message", hasBodyMessage ? "true" : "false" },
 284                { "senderId", fromUserId },
 285                { "receiverId", toUserId },
 286                { "friendRequestId", friendRequestId },
 287            };
 288
 0289            analytics.SendAnalytic(FRIEND_REQUEST_REJECTED, data);
 0290        }
 291
 292        public void SendFriendRequestCancelled(string fromUserId, string toUserId, string source, string friendRequestId
 293        {
 0294            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0295            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 296
 0297            if (fromPlayerType == null || toPlayerType == null)
 0298                return;
 299
 0300            Dictionary<string, string> data = new Dictionary<string, string>
 301            {
 302                { "from", fromPlayerType.ToString() },
 303                { "to", toPlayerType.ToString() },
 304                { "source", source },
 305                { "friendRequestId", friendRequestId },
 306                { "senderId", fromUserId },
 307                { "receiverId", toUserId },
 308            };
 309
 0310            analytics.SendAnalytic(FRIEND_REQUEST_CANCELLED, data);
 0311        }
 312
 313        public void SendFriendDeleted(string fromUserId, string toUserId, PlayerActionSource source)
 314        {
 0315            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0316            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 317
 0318            if (fromPlayerType == null || toPlayerType == null)
 0319                return;
 320
 0321            Dictionary<string, string> data = new Dictionary<string, string>
 322            {
 323                { "from", fromPlayerType.ToString() },
 324                { "to", toPlayerType.ToString() },
 325                { "source", source.ToString() },
 326                { "senderId", fromUserId },
 327                { "receiverId", toUserId },
 328            };
 329
 0330            analytics.SendAnalytic(FRIEND_DELETED, data);
 0331        }
 332
 333        public void SendMessageWithMention(string recipientId)
 334        {
 0335            analytics.SendAnalytic(MENTION_MESSAGE_SENT, new Dictionary<string, string>
 336            {
 337                { "receiver_wallet_id", recipientId },
 338            });
 0339        }
 340
 341        public void SendClickedMention(string recipientId)
 342        {
 0343            analytics.SendAnalytic(MENTION_CLICKED, new Dictionary<string, string>
 344            {
 345                { "receiver_wallet_id", recipientId },
 346            });
 0347        }
 348
 349        public void SendMentionCreated(MentionCreationSource source, string recipientId)
 350        {
 0351            Dictionary<string, string> data = new Dictionary<string, string>
 352            {
 353                { "source", source.ToString() },
 354                { "receiver_wallet_id", recipientId },
 355            };
 356
 0357            analytics.SendAnalytic(MENTION_CREATED, data);
 0358        }
 359
 360        public void SendPassportOpen(string recipientId, bool found = true, AvatarOpenSource source = AvatarOpenSource.W
 361        {
 0362            Dictionary<string, string> data = new Dictionary<string, string>
 363            {
 364                { "source", source.ToString() },
 365                { "found", found.ToString() },
 366                { "receiver_wallet_id", recipientId },
 367            };
 368
 0369            analytics.SendAnalytic(PASSPORT_OPENED, data);
 0370        }
 371
 372        public void SendPassportClose(string recipientId, double timeSpent)
 373        {
 0374            Dictionary<string, string> data = new Dictionary<string, string>
 375            {
 376                { "time_spent", timeSpent.ToString() },
 377                { "receiver_wallet_id", recipientId },
 378            };
 379
 0380            analytics.SendAnalytic(PASSPORT_CLOSED, data);
 0381        }
 382
 383        public void SendPlayerBlocked(bool isFriend, PlayerActionSource source, string recipientId)
 384        {
 0385            Dictionary<string, string> data = new Dictionary<string, string>
 386            {
 387                { "friend", isFriend.ToString() },
 388                { "source", source.ToString() },
 389                { "receiver_wallet_id", recipientId },
 390            };
 391
 0392            analytics.SendAnalytic(PLAYER_BLOCKED, data);
 0393        }
 394
 395        public void SendPlayerUnblocked(bool isFriend, PlayerActionSource source, string recipientId)
 396        {
 0397            Dictionary<string, string> data = new Dictionary<string, string>
 398            {
 399                { "friend", isFriend.ToString() },
 400                { "source", source.ToString() },
 401                { "receiver_wallet_id", recipientId },
 402            };
 403
 0404            analytics.SendAnalytic(PLAYER_UNBLOCKED, data);
 0405        }
 406
 407        public void SendPlayerReport(PlayerReportIssueType issueType, double messageLength, PlayerActionSource source, s
 408        {
 0409            Dictionary<string, string> data = new Dictionary<string, string>
 410            {
 411                { "issue_type", issueType.ToString() },
 412                { "text_length", messageLength.ToString() },
 413                { "source", source.ToString() },
 414                { "receiver_wallet_id", recipientId },
 415            };
 416
 0417            analytics.SendAnalytic(PLAYER_REPORT, data);
 0418        }
 419
 420        public void SendPlayerJoin(PlayerActionSource source, string recipientId)
 421        {
 0422            Dictionary<string, string> data = new Dictionary<string, string>
 423            {
 424                { "source", source.ToString() },
 425                { "receiver_wallet_id", recipientId },
 426            };
 427
 0428            analytics.SendAnalytic(PLAYER_JOIN, data);
 0429        }
 430
 431        public void SendPlayEmote(string emoteId, string emoteName, string rarity, bool isBaseEmote, UserProfile.EmoteSo
 432            string parcelLocation)
 433        {
 0434            Dictionary<string, string> data = new Dictionary<string, string>
 435            {
 436                { "id", emoteId },
 437                { "name", emoteName },
 438                { "rarity", rarity },
 439                { "isBase", isBaseEmote.ToString() },
 440                { "source", source.ToString() },
 441                { "parcel_location", parcelLocation },
 442            };
 443
 0444            analytics.SendAnalytic(PLAY_EMOTE, data);
 0445        }
 446
 447        public void SendEmptyChannelCreated(string channelName, ChannelJoinedSource source)
 448        {
 0449            string command = source switch
 450                             {
 0451                                 ChannelJoinedSource.Command => "command",
 0452                                 ChannelJoinedSource.Link => "link",
 0453                                 ChannelJoinedSource.Search => "create_search",
 0454                                 _ => ""
 455                             };
 456
 0457            var data = new Dictionary<string, string>
 458            {
 459                { "source", command },
 460                { "channel", channelName },
 461            };
 462
 0463            analytics.SendAnalytic(EMPTY_CHANNEL_CREATED, data);
 0464        }
 465
 466        public void SendPopulatedChannelJoined(string channelName, ChannelJoinedSource source, string method)
 467        {
 0468            string conversationList = source switch
 469                                      {
 0470                                          ChannelJoinedSource.Command => "command",
 0471                                          ChannelJoinedSource.Link => "link",
 0472                                          ChannelJoinedSource.Search => "search",
 0473                                          ChannelJoinedSource.ConversationList => "conversation_list",
 0474                                          _ => ""
 475                                      };
 476
 0477            var data = new Dictionary<string, string>
 478            {
 479                { "source", conversationList },
 480                { "channel", channelName },
 481                { "method", method },
 482            };
 483
 0484            analytics.SendAnalytic(POPULATED_CHANNEL_JOINED, data);
 0485        }
 486
 487        public void SendLeaveChannel(string channelId, ChannelLeaveSource source)
 488        {
 0489            string conversationList = source switch
 490                                      {
 0491                                          ChannelLeaveSource.Chat => "chat",
 0492                                          ChannelLeaveSource.Command => "command",
 0493                                          ChannelLeaveSource.Search => "search",
 0494                                          ChannelLeaveSource.ConversationList => "conversation_list",
 0495                                          _ => ""
 496                                      };
 497
 0498            var data = new Dictionary<string, string>
 499            {
 500                { "source", conversationList },
 501                { "channel", channelId },
 502            };
 503
 0504            analytics.SendAnalytic(CHANNEL_LEAVE, data);
 0505        }
 506
 507        public void SendChannelSearch(string text)
 508        {
 0509            var data = new Dictionary<string, string>
 510                { { "search", text } };
 511
 0512            analytics.SendAnalytic(CHANNEL_SEARCH, data);
 0513        }
 514
 515        public void SendChannelLinkClicked(string channel, bool joinAccepted, ChannelLinkSource source)
 516        {
 0517            string profile = source switch
 518                             {
 0519                                 ChannelLinkSource.Chat => "chat",
 0520                                 ChannelLinkSource.Event => "event",
 0521                                 ChannelLinkSource.Place => "place",
 0522                                 ChannelLinkSource.Profile => "profile",
 0523                                 _ => ""
 524                             };
 525
 0526            var data = new Dictionary<string, string>
 527            {
 528                { "source", profile },
 529                { "channel", channel },
 530                { "result", joinAccepted ? "joined" : "cancel" },
 531            };
 532
 0533            analytics.SendAnalytic(CHANNEL_LINK_CLICK, data);
 0534        }
 535
 536        private PlayerType? GetPlayerTypeByUserId(string userId)
 537        {
 0538            if (string.IsNullOrEmpty(userId))
 0539                return null;
 540
 0541            UserProfile userProfile = userProfileBridge.Get(userId);
 542
 0543            if (userProfile == null)
 0544                return null;
 545
 0546            return userProfile.isGuest ? PlayerType.Guest : PlayerType.Wallet;
 547        }
 548    }
 549}

Methods/Properties

i()
i(SocialFeaturesAnalytics.SocialAnalytics)
SocialAnalytics(IAnalytics, IUserProfileBridge)
SendPlayerMuted(System.String)
SendPlayerUnmuted(System.String)
SendVoiceMessageStartedByFirstTime()
SendVoiceMessage(System.Double, SocialFeaturesAnalytics.VoiceMessageSource, System.String)
SendVoiceChannelConnection(System.Int32)
SendVoiceChannelDisconnection()
SendClickedOnCollectibles()
SendStartedConversation(SocialFeaturesAnalytics.PlayerActionSource, System.String)
SendNftBuy(SocialFeaturesAnalytics.PlayerActionSource)
SendInspectAvatar(System.Double)
SendLinkClick(SocialFeaturesAnalytics.PlayerActionSource)
SendCopyWallet(SocialFeaturesAnalytics.PlayerActionSource)
SendCopyUsername(SocialFeaturesAnalytics.PlayerActionSource)
SendJumpInToPlayer(SocialFeaturesAnalytics.PlayerActionSource, System.String)
SendProfileEdit(System.Int32, System.Boolean, SocialFeaturesAnalytics.PlayerActionSource, SocialFeaturesAnalytics.ProfileField)
SendVoiceChatPreferencesChanged(DCL.SettingsCommon.GeneralSettings/VoiceChatAllow)
SendFriendRequestError(System.String, System.String, System.String, System.String, System.String)
SendFriendRequestSent(System.String, System.String, System.Double, SocialFeaturesAnalytics.PlayerActionSource, System.String)
SendFriendRequestApproved(System.String, System.String, System.String, System.Boolean, System.String)
SendFriendRequestRejected(System.String, System.String, System.String, System.Boolean, System.String)
SendFriendRequestCancelled(System.String, System.String, System.String, System.String)
SendFriendDeleted(System.String, System.String, SocialFeaturesAnalytics.PlayerActionSource)
SendMessageWithMention(System.String)
SendClickedMention(System.String)
SendMentionCreated(SocialFeaturesAnalytics.MentionCreationSource, System.String)
SendPassportOpen(System.String, System.Boolean, SocialFeaturesAnalytics.AvatarOpenSource)
SendPassportClose(System.String, System.Double)
SendPlayerBlocked(System.Boolean, SocialFeaturesAnalytics.PlayerActionSource, System.String)
SendPlayerUnblocked(System.Boolean, SocialFeaturesAnalytics.PlayerActionSource, System.String)
SendPlayerReport(SocialFeaturesAnalytics.PlayerReportIssueType, System.Double, SocialFeaturesAnalytics.PlayerActionSource, System.String)
SendPlayerJoin(SocialFeaturesAnalytics.PlayerActionSource, System.String)
SendPlayEmote(System.String, System.String, System.String, System.Boolean, UserProfile/EmoteSource, System.String)
SendEmptyChannelCreated(System.String, DCL.ChannelJoinedSource)
SendPopulatedChannelJoined(System.String, DCL.ChannelJoinedSource, System.String)
SendLeaveChannel(System.String, DCL.ChannelLeaveSource)
SendChannelSearch(System.String)
SendChannelLinkClicked(System.String, System.Boolean, DCL.ChannelLinkSource)
GetPlayerTypeByUserId(System.String)