< 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:159
Coverable lines:165
Total lines:340
Line coverage:3.6% (6 of 165)
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%
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 CHANNEL_LINK_CLICK = "player_clicks_channel_link";
 33
 40334        public static SocialAnalytics i { get; private set; }
 35
 36        private readonly IAnalytics analytics;
 37        private readonly IUserProfileBridge userProfileBridge;
 38
 40239        public SocialAnalytics(IAnalytics analytics, IUserProfileBridge userProfileBridge)
 40        {
 40241            this.analytics = analytics;
 40242            this.userProfileBridge = userProfileBridge;
 40243            i ??= this;
 40244        }
 45
 46        public void SendPlayerMuted(string toUserId)
 47        {
 048            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 49
 050            if (toPlayerType == null)
 051                return;
 52
 053            Dictionary<string, string> data = new Dictionary<string, string>();
 054            data.Add("to", toPlayerType.ToString());
 55
 056            analytics.SendAnalytic(PLAYER_MUTED, data);
 057        }
 58
 59        public void SendPlayerUnmuted(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>();
 067            data.Add("to", toPlayerType.ToString());
 68
 069            analytics.SendAnalytic(PLAYER_UNMUTED, data);
 070        }
 71
 072        public void SendVoiceMessageStartedByFirstTime() { analytics.SendAnalytic(VOICE_MESSAGE_STARTED_BY_FIRST_TIME, n
 73
 74        public void SendVoiceMessage(double messageLength, VoiceMessageSource source, string fromUserId)
 75        {
 076            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 77
 078            if (fromPlayerType == null)
 079                return;
 80
 081            Dictionary<string, string> data = new Dictionary<string, string>();
 082            data.Add("from", fromPlayerType.ToString());
 083            data.Add("length", messageLength.ToString());
 084            data.Add("source", source.ToString());
 85
 086            analytics.SendAnalytic(VOICE_MESSAGE_SENT, data);
 087        }
 88
 89        public void SendVoiceChannelConnection(int numberOfPeers)
 90        {
 091            Dictionary<string, string> data = new Dictionary<string, string>();
 092            data.Add("numberOfPeers", numberOfPeers.ToString());
 93
 094            analytics.SendAnalytic(VOICE_CHANNEL_CONNECTION, data);
 095        }
 96
 097        public void SendVoiceChannelDisconnection() { analytics.SendAnalytic(VOICE_CHANNEL_DISCONNECTION, new Dictionary
 98
 99        public void SendVoiceChatPreferencesChanged(VoiceChatAllow preference)
 100        {
 0101            Dictionary<string, string> data = new Dictionary<string, string>();
 0102            data.Add("allow", preference.ToString());
 103
 0104            analytics.SendAnalytic(VOICE_CHAT_PREFERENCES_CHANGED, data);
 0105        }
 106
 107        public void SendFriendRequestSent(string fromUserId, string toUserId, double messageLength, PlayerActionSource s
 108        {
 0109            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0110            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 111
 0112            if (fromPlayerType == null || toPlayerType == null)
 0113                return;
 114
 0115            Dictionary<string, string> data = new Dictionary<string, string>();
 0116            data.Add("from", fromPlayerType.ToString());
 0117            data.Add("to", toPlayerType.ToString());
 0118            data.Add("text_length", messageLength.ToString());
 0119            data.Add("source", source.ToString());
 120
 0121            analytics.SendAnalytic(FRIEND_REQUEST_SENT, data);
 0122        }
 123
 124        public void SendFriendRequestApproved(string fromUserId, string toUserId, PlayerActionSource source)
 125        {
 0126            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0127            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 128
 0129            if (fromPlayerType == null || toPlayerType == null)
 0130                return;
 131
 0132            Dictionary<string, string> data = new Dictionary<string, string>();
 0133            data.Add("from", fromPlayerType.ToString());
 0134            data.Add("to", toPlayerType.ToString());
 0135            data.Add("source", source.ToString());
 136
 0137            analytics.SendAnalytic(FRIEND_REQUEST_APPROVED, data);
 0138        }
 139
 140        public void SendFriendRequestRejected(string fromUserId, string toUserId, PlayerActionSource source)
 141        {
 0142            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0143            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 144
 0145            if (fromPlayerType == null || toPlayerType == null)
 0146                return;
 147
 0148            Dictionary<string, string> data = new Dictionary<string, string>();
 0149            data.Add("from", fromPlayerType.ToString());
 0150            data.Add("to", toPlayerType.ToString());
 0151            data.Add("source", source.ToString());
 152
 0153            analytics.SendAnalytic(FRIEND_REQUEST_REJECTED, data);
 0154        }
 155
 156        public void SendFriendRequestCancelled(string fromUserId, string toUserId, PlayerActionSource source)
 157        {
 0158            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0159            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 160
 0161            if (fromPlayerType == null || toPlayerType == null)
 0162                return;
 163
 0164            Dictionary<string, string> data = new Dictionary<string, string>();
 0165            data.Add("from", fromPlayerType.ToString());
 0166            data.Add("to", toPlayerType.ToString());
 0167            data.Add("source", source.ToString());
 168
 0169            analytics.SendAnalytic(FRIEND_REQUEST_CANCELLED, data);
 0170        }
 171
 172        public void SendFriendDeleted(string fromUserId, string toUserId, PlayerActionSource source)
 173        {
 0174            PlayerType? fromPlayerType = GetPlayerTypeByUserId(fromUserId);
 0175            PlayerType? toPlayerType = GetPlayerTypeByUserId(toUserId);
 176
 0177            if (fromPlayerType == null || toPlayerType == null)
 0178                return;
 179
 0180            Dictionary<string, string> data = new Dictionary<string, string>();
 0181            data.Add("from", fromPlayerType.ToString());
 0182            data.Add("to", toPlayerType.ToString());
 0183            data.Add("source", source.ToString());
 184
 0185            analytics.SendAnalytic(FRIEND_DELETED, data);
 0186        }
 187
 188        public void SendPassportOpen()
 189        {
 0190            analytics.SendAnalytic(PASSPORT_OPENED, new Dictionary<string, string>());
 0191        }
 192
 193        public void SendPassportClose(double timeSpent)
 194        {
 0195            Dictionary<string, string> data = new Dictionary<string, string>();
 0196            data.Add("time_spent", timeSpent.ToString());
 197
 0198            analytics.SendAnalytic(PASSPORT_CLOSED, data);
 0199        }
 200
 201        public void SendPlayerBlocked(bool isFriend, PlayerActionSource source)
 202        {
 0203            Dictionary<string, string> data = new Dictionary<string, string>();
 0204            data.Add("friend", isFriend.ToString());
 0205            data.Add("source", source.ToString());
 206
 0207            analytics.SendAnalytic(PLAYER_BLOCKED, data);
 0208        }
 209
 210        public void SendPlayerUnblocked(bool isFriend, PlayerActionSource source)
 211        {
 0212            Dictionary<string, string> data = new Dictionary<string, string>();
 0213            data.Add("friend", isFriend.ToString());
 0214            data.Add("source", source.ToString());
 215
 0216            analytics.SendAnalytic(PLAYER_UNBLOCKED, data);
 0217        }
 218
 219        public void SendPlayerReport(PlayerReportIssueType issueType, double messageLength, PlayerActionSource source)
 220        {
 0221            Dictionary<string, string> data = new Dictionary<string, string>();
 0222            data.Add("issue_type", issueType.ToString());
 0223            data.Add("text_length", messageLength.ToString());
 0224            data.Add("source", source.ToString());
 225
 0226            analytics.SendAnalytic(PLAYER_REPORT, data);
 0227        }
 228
 229        public void SendPlayerJoin(PlayerActionSource source)
 230        {
 0231            Dictionary<string, string> data = new Dictionary<string, string>();
 0232            data.Add("source", source.ToString());
 233
 0234            analytics.SendAnalytic(PLAYER_JOIN, data);
 0235        }
 236
 237        public void SendPlayEmote(string emoteId, string emoteName, string rarity, bool isBaseEmote, UserProfile.EmoteSo
 238        {
 0239            Dictionary<string, string> data = new Dictionary<string, string>();
 0240            data.Add("id", emoteId);
 0241            data.Add("name", emoteName);
 0242            data.Add("rarity", rarity);
 0243            data.Add("isBase", isBaseEmote.ToString());
 0244            data.Add("source", source.ToString());
 0245            data.Add("parcel_location", parcelLocation);
 246
 0247            analytics.SendAnalytic(PLAY_EMOTE, data);
 0248        }
 249
 250        public void SendEmptyChannelCreated(string channelName, ChannelJoinedSource source)
 251        {
 0252            var data = new Dictionary<string, string>
 253            {
 254                ["source"] = source switch
 255                {
 0256                    ChannelJoinedSource.Command => "command",
 0257                    ChannelJoinedSource.Link => "link",
 0258                    ChannelJoinedSource.Search => "create_search",
 0259                    _ => ""
 260                },
 261                ["channel"] = channelName
 262            };
 0263            analytics.SendAnalytic(EMPTY_CHANNEL_CREATED, data);
 0264        }
 265
 266        public void SendPopulatedChannelJoined(string channelName, ChannelJoinedSource source, string method)
 267        {
 0268            var data = new Dictionary<string, string>
 269            {
 270                ["source"] = source switch
 271                {
 0272                    ChannelJoinedSource.Command => "command",
 0273                    ChannelJoinedSource.Link => "link",
 0274                    ChannelJoinedSource.Search => "search",
 0275                    ChannelJoinedSource.ConversationList => "conversation_list",
 0276                    _ => ""
 277                },
 278                ["channel"] = channelName,
 279                ["method"] = method
 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                {
 0290                    ChannelLeaveSource.Chat => "chat",
 0291                    ChannelLeaveSource.Command => "command",
 0292                    ChannelLeaveSource.Search => "search",
 0293                    ChannelLeaveSource.ConversationList => "conversation_list",
 0294                    _ => ""
 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 SendChannelLinkClicked(string channel, bool joinAccepted, ChannelLinkSource source)
 311        {
 0312            var data = new Dictionary<string, string>
 313            {
 314                ["source"] = source switch
 315                {
 0316                    ChannelLinkSource.Chat => "chat",
 0317                    ChannelLinkSource.Event => "event",
 0318                    ChannelLinkSource.Place => "place",
 0319                    ChannelLinkSource.Profile => "profile",
 0320                    _ => ""
 321                },
 322                ["channel"] = channel,
 323                ["result"] = joinAccepted ? "joined" : "cancel"
 324            };
 0325            analytics.SendAnalytic(CHANNEL_LINK_CLICK, data);
 0326        }
 327
 328        private PlayerType? GetPlayerTypeByUserId(string userId)
 329        {
 0330            if (string.IsNullOrEmpty(userId))
 0331                return null;
 332
 0333            UserProfile userProfile = userProfileBridge.Get(userId);
 334
 0335            if (userProfile == null)
 0336                return null;
 0337            return userProfile.isGuest ? PlayerType.Guest : PlayerType.Wallet;
 338        }
 339    }
 340}

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, System.String)
SendLeaveChannel(System.String, DCL.ChannelLeaveSource)
SendChannelSearch(System.String)
SendChannelLinkClicked(System.String, System.Boolean, DCL.ChannelLinkSource)
GetPlayerTypeByUserId(System.String)