< 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:143
Coverable lines:149
Total lines:351
Line coverage:4% (6 of 149)
Covered branches:0
Total branches:0

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%
SendVoiceChatPreferencesChanged(...)0%2100%
SendFriendRequestSent(...)0%12300%
SendFriendRequestApproved(...)0%12300%
SendFriendRequestRejected(...)0%12300%
SendFriendRequestCancelled(...)0%12300%
SendFriendDeleted(...)0%12300%
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%
SendMessageSentToChannel(...)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 System.Collections.Generic;
 2using DCL;
 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_DELETED = "friend_deleted";
 21        private const string PASSPORT_OPENED = "passport_opened";
 22        private const string PASSPORT_CLOSED = "passport_closed";
 23        private const string PLAYER_BLOCKED = "user_blocked";
 24        private const string PLAYER_UNBLOCKED = "user_unblocked";
 25        private const string PLAYER_REPORT = "player_report";
 26        private const string PLAYER_JOIN = "player_join";
 27        private const string PLAY_EMOTE = "used_emote";
 28        private const string EMPTY_CHANNEL_CREATED = "chat_channel_created";
 29        private const string POPULATED_CHANNEL_JOINED = "player_joins_channel";
 30        private const string CHANNEL_LEAVE = "player_leaves_channel";
 31        private const string CHANNEL_SEARCH = "player_search_channel";
 32        private const string MESSAGE_SENT_TO_CHANNEL = "send_chat_message";
 33        private const string CHANNEL_LINK_CLICK = "player_clicks_channel_link";
 34
 58035        public static SocialAnalytics i { get; private set; }
 36
 37        private readonly IAnalytics analytics;
 38        private readonly IUserProfileBridge userProfileBridge;
 39
 57940        public SocialAnalytics(IAnalytics analytics, IUserProfileBridge userProfileBridge)
 41        {
 57942            this.analytics = analytics;
 57943            this.userProfileBridge = userProfileBridge;
 57944            i ??= this;
 57945        }
 46
 47        public void SendPlayerMuted(string toUserId)
 48        {
 049            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 50
 051            if (toPlayerType == null)
 052                return;
 53
 054            Dictionary<string, string> data = new Dictionary<string, string>();
 055            data.Add("to", toPlayerType.ToString());
 56
 057            analytics.SendAnalytic(PLAYER_MUTED, data);
 058        }
 59
 60        public void SendPlayerUnmuted(string toUserId)
 61        {
 062            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 63
 064            if (toPlayerType == null)
 065                return;
 66
 067            Dictionary<string, string> data = new Dictionary<string, string>();
 068            data.Add("to", toPlayerType.ToString());
 69
 070            analytics.SendAnalytic(PLAYER_UNMUTED, data);
 071        }
 72
 073        public void SendVoiceMessageStartedByFirstTime() { analytics.SendAnalytic(VOICE_MESSAGE_STARTED_BY_FIRST_TIME, n
 74
 75        public void SendVoiceMessage(double messageLength, VoiceMessageSource source, string fromUserId)
 76        {
 077            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 78
 079            if (fromPlayerType == null)
 080                return;
 81
 082            Dictionary<string, string> data = new Dictionary<string, string>();
 083            data.Add("from", fromPlayerType.ToString());
 084            data.Add("length", messageLength.ToString());
 085            data.Add("source", source.ToString());
 86
 087            analytics.SendAnalytic(VOICE_MESSAGE_SENT, data);
 088        }
 89
 90        public void SendVoiceChannelConnection(int numberOfPeers)
 91        {
 092            Dictionary<string, string> data = new Dictionary<string, string>();
 093            data.Add("numberOfPeers", numberOfPeers.ToString());
 94
 095            analytics.SendAnalytic(VOICE_CHANNEL_CONNECTION, data);
 096        }
 97
 098        public void SendVoiceChannelDisconnection() { analytics.SendAnalytic(VOICE_CHANNEL_DISCONNECTION, new Dictionary
 99
 100        public void SendVoiceChatPreferencesChanged(VoiceChatAllow preference)
 101        {
 0102            Dictionary<string, string> data = new Dictionary<string, string>();
 0103            data.Add("allow", preference.ToString());
 104
 0105            analytics.SendAnalytic(VOICE_CHAT_PREFERENCES_CHANGED, data);
 0106        }
 107
 108        public void SendFriendRequestSent(string fromUserId, string toUserId, double messageLength, PlayerActionSource s
 109        {
 0110            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0111            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 112
 0113            if (fromPlayerType == null || toPlayerType == null)
 0114                return;
 115
 0116            Dictionary<string, string> data = new Dictionary<string, string>();
 0117            data.Add("from", fromPlayerType.ToString());
 0118            data.Add("to", toPlayerType.ToString());
 0119            data.Add("text_length", messageLength.ToString());
 0120            data.Add("source", source.ToString());
 121
 0122            analytics.SendAnalytic(FRIEND_REQUEST_SENT, data);
 0123        }
 124
 125        public void SendFriendRequestApproved(string fromUserId, string toUserId, PlayerActionSource source)
 126        {
 0127            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0128            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 129
 0130            if (fromPlayerType == null || toPlayerType == null)
 0131                return;
 132
 0133            Dictionary<string, string> data = new Dictionary<string, string>();
 0134            data.Add("from", fromPlayerType.ToString());
 0135            data.Add("to", toPlayerType.ToString());
 0136            data.Add("source", source.ToString());
 137
 0138            analytics.SendAnalytic(FRIEND_REQUEST_APPROVED, data);
 0139        }
 140
 141        public void SendFriendRequestRejected(string fromUserId, string toUserId, PlayerActionSource source)
 142        {
 0143            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0144            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 145
 0146            if (fromPlayerType == null || toPlayerType == null)
 0147                return;
 148
 0149            Dictionary<string, string> data = new Dictionary<string, string>();
 0150            data.Add("from", fromPlayerType.ToString());
 0151            data.Add("to", toPlayerType.ToString());
 0152            data.Add("source", source.ToString());
 153
 0154            analytics.SendAnalytic(FRIEND_REQUEST_REJECTED, data);
 0155        }
 156
 157        public void SendFriendRequestCancelled(string fromUserId, string toUserId, PlayerActionSource source)
 158        {
 0159            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0160            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 161
 0162            if (fromPlayerType == null || toPlayerType == null)
 0163                return;
 164
 0165            Dictionary<string, string> data = new Dictionary<string, string>();
 0166            data.Add("from", fromPlayerType.ToString());
 0167            data.Add("to", toPlayerType.ToString());
 0168            data.Add("source", source.ToString());
 169
 0170            analytics.SendAnalytic(FRIEND_REQUEST_CANCELLED, data);
 0171        }
 172
 173        public void SendFriendDeleted(string fromUserId, string toUserId, PlayerActionSource source)
 174        {
 0175            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0176            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 177
 0178            if (fromPlayerType == null || toPlayerType == null)
 0179                return;
 180
 0181            Dictionary<string, string> data = new Dictionary<string, string>();
 0182            data.Add("from", fromPlayerType.ToString());
 0183            data.Add("to", toPlayerType.ToString());
 0184            data.Add("source", source.ToString());
 185
 0186            analytics.SendAnalytic(FRIEND_DELETED, data);
 0187        }
 188
 189        public void SendPassportOpen()
 190        {
 0191            analytics.SendAnalytic(PASSPORT_OPENED, new Dictionary<string, string>());
 0192        }
 193
 194        public void SendPassportClose(double timeSpent)
 195        {
 0196            Dictionary<string, string> data = new Dictionary<string, string>();
 0197            data.Add("time_spent", timeSpent.ToString());
 198
 0199            analytics.SendAnalytic(PASSPORT_CLOSED, data);
 0200        }
 201
 202        public void SendPlayerBlocked(bool isFriend, PlayerActionSource source)
 203        {
 0204            Dictionary<string, string> data = new Dictionary<string, string>();
 0205            data.Add("friend", isFriend.ToString());
 0206            data.Add("source", source.ToString());
 207
 0208            analytics.SendAnalytic(PLAYER_BLOCKED, data);
 0209        }
 210
 211        public void SendPlayerUnblocked(bool isFriend, PlayerActionSource source)
 212        {
 0213            Dictionary<string, string> data = new Dictionary<string, string>();
 0214            data.Add("friend", isFriend.ToString());
 0215            data.Add("source", source.ToString());
 216
 0217            analytics.SendAnalytic(PLAYER_UNBLOCKED, data);
 0218        }
 219
 220        public void SendPlayerReport(PlayerReportIssueType issueType, double messageLength, PlayerActionSource source)
 221        {
 0222            Dictionary<string, string> data = new Dictionary<string, string>();
 0223            data.Add("issue_type", issueType.ToString());
 0224            data.Add("text_length", messageLength.ToString());
 0225            data.Add("source", source.ToString());
 226
 0227            analytics.SendAnalytic(PLAYER_REPORT, data);
 0228        }
 229
 230        public void SendPlayerJoin(PlayerActionSource source)
 231        {
 0232            Dictionary<string, string> data = new Dictionary<string, string>();
 0233            data.Add("source", source.ToString());
 234
 0235            analytics.SendAnalytic(PLAYER_JOIN, data);
 0236        }
 237
 238        public void SendPlayEmote(string emoteId, string emoteName, string rarity, bool isBaseEmote, UserProfile.EmoteSo
 239        {
 0240            Dictionary<string, string> data = new Dictionary<string, string>();
 0241            data.Add("id", emoteId);
 0242            data.Add("name", emoteName);
 0243            data.Add("rarity", rarity);
 0244            data.Add("isBase", isBaseEmote.ToString());
 0245            data.Add("source", source.ToString());
 0246            data.Add("parcel_location", parcelLocation);
 247
 0248            analytics.SendAnalytic(PLAY_EMOTE, data);
 0249        }
 250
 251        public void SendEmptyChannelCreated(string channelName, ChannelJoinedSource source)
 252        {
 0253            var data = new Dictionary<string, string>
 254            {
 255                ["source"] = source switch
 256                {
 257                    ChannelJoinedSource.Command => "command",
 258                    ChannelJoinedSource.Link => "link",
 259                    ChannelJoinedSource.Search => "create_search",
 260                    _ => ""
 261                },
 262                ["channel"] = channelName
 263            };
 0264            analytics.SendAnalytic(EMPTY_CHANNEL_CREATED, data);
 0265        }
 266
 267        public void SendPopulatedChannelJoined(string channelName, ChannelJoinedSource source)
 268        {
 0269            var data = new Dictionary<string, string>
 270            {
 271                ["source"] = source switch
 272                {
 273                    ChannelJoinedSource.Command => "command",
 274                    ChannelJoinedSource.Link => "link",
 275                    ChannelJoinedSource.Search => "search",
 276                    ChannelJoinedSource.ConversationList => "conversation_list",
 277                    _ => ""
 278                },
 279                ["channel"] = channelName
 280            };
 0281            analytics.SendAnalytic(POPULATED_CHANNEL_JOINED, data);
 0282        }
 283
 284        public void SendLeaveChannel(string channelId, ChannelLeaveSource source)
 285        {
 0286            var data = new Dictionary<string, string>
 287            {
 288                ["source"] = source switch
 289                {
 290                    ChannelLeaveSource.Chat => "chat",
 291                    ChannelLeaveSource.Command => "command",
 292                    ChannelLeaveSource.Search => "search",
 293                    ChannelLeaveSource.ConversationList => "conversation_list",
 294                    _ => ""
 295                },
 296                ["channel"] = channelId
 297            };
 0298            analytics.SendAnalytic(CHANNEL_LEAVE, data);
 0299        }
 300
 301        public void SendChannelSearch(string text)
 302        {
 0303            var data = new Dictionary<string, string>
 304            {
 305                ["search"] = text
 306            };
 0307            analytics.SendAnalytic(CHANNEL_SEARCH, data);
 0308        }
 309
 310        public void SendMessageSentToChannel(string channelName, int bodyLength, string source)
 311        {
 0312            var data = new Dictionary<string, string>
 313            {
 314                ["source"] = source,
 315                ["channel"] = channelName,
 316                ["length"] = bodyLength.ToString()
 317            };
 0318            analytics.SendAnalytic(MESSAGE_SENT_TO_CHANNEL, data);
 0319        }
 320
 321        public void SendChannelLinkClicked(string channel, bool joinAccepted, ChannelLinkSource source)
 322        {
 0323            var data = new Dictionary<string, string>
 324            {
 325                ["source"] = source switch
 326                {
 327                    ChannelLinkSource.Chat => "chat",
 328                    ChannelLinkSource.Event => "event",
 329                    ChannelLinkSource.Place => "place",
 330                    ChannelLinkSource.Profile => "profile",
 331                    _ => ""
 332                },
 333                ["channel"] = channel,
 334                ["result"] = joinAccepted ? "joined" : "cancel"
 335            };
 0336            analytics.SendAnalytic(CHANNEL_LINK_CLICK, data);
 0337        }
 338
 339        private PlayerType? GetPlayerTypeByUserId(string userId)
 340        {
 0341            if (string.IsNullOrEmpty(userId))
 0342                return null;
 343
 0344            UserProfile userProfile = userProfileBridge.Get(userId);
 345
 0346            if (userProfile == null)
 0347                return null;
 0348            return userProfile.isGuest ? PlayerType.Guest : PlayerType.Wallet;
 349        }
 350    }
 351}

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()
SendVoiceChatPreferencesChanged(DCL.SettingsCommon.GeneralSettings/VoiceChatAllow)
SendFriendRequestSent(System.String, System.String, System.Double, SocialFeaturesAnalytics.PlayerActionSource)
SendFriendRequestApproved(System.String, System.String, SocialFeaturesAnalytics.PlayerActionSource)
SendFriendRequestRejected(System.String, System.String, SocialFeaturesAnalytics.PlayerActionSource)
SendFriendRequestCancelled(System.String, System.String, SocialFeaturesAnalytics.PlayerActionSource)
SendFriendDeleted(System.String, System.String, SocialFeaturesAnalytics.PlayerActionSource)
SendPassportOpen()
SendPassportClose(System.Double)
SendPlayerBlocked(System.Boolean, SocialFeaturesAnalytics.PlayerActionSource)
SendPlayerUnblocked(System.Boolean, SocialFeaturesAnalytics.PlayerActionSource)
SendPlayerReport(SocialFeaturesAnalytics.PlayerReportIssueType, System.Double, SocialFeaturesAnalytics.PlayerActionSource)
SendPlayerJoin(SocialFeaturesAnalytics.PlayerActionSource)
SendPlayEmote(System.String, System.String, System.String, System.Boolean, UserProfile/EmoteSource, System.String)
SendEmptyChannelCreated(System.String, DCL.ChannelJoinedSource)
SendPopulatedChannelJoined(System.String, DCL.ChannelJoinedSource)
SendLeaveChannel(System.String, DCL.ChannelLeaveSource)
SendChannelSearch(System.String)
SendMessageSentToChannel(System.String, System.Int32, System.String)
SendChannelLinkClicked(System.String, System.Boolean, DCL.ChannelLinkSource)
GetPlayerTypeByUserId(System.String)