public TelemetryClientWrapper(IUserUniqueIdStore userUniqueIdStore)
        {
            var userUniqueId = userUniqueIdStore.Get();

            TelemetryClient = new TelemetryClient
            {
                Context =
                {
                    User          =
                    {
                        Id        = userUniqueId.ToString(),
                        AccountId = userUniqueId.ToString()
                    },
                },
            };
        }
        public void TransmitExtensionLoadedEvent(string ide, string ideVersion, string extensionVersion)
        {
            try
            {
                if (!_enableAnalyticsChecker.IsEnabled())
                {
                    return;
                }

                var userUniqueId        = _userUniqueIdStore.Get();
                var logonAnalyticsEvent = new ExtensionLoadedAnalyticsEvent(DateTime.UtcNow, userUniqueId, ide, ideVersion, extensionVersion);
                _analyticsTransmitterSink.TransmitEvent(logonAnalyticsEvent);
            }
            catch (Exception)
            {
                // catch all exceptions since we do not want to break the whole extension simply because data transmission failed
            }
        }
        public void TransmitExtensionLoadedEvent(string extensionVersion)
        {
            try
            {
                if (!_enableAnalyticsChecker.IsEnabled())
                {
                    return;
                }

                var    userUniqueId     = _userUniqueIdStore.Get();
                string ideName          = _ideInformationStore.GetName();
                string ideVersion       = _ideInformationStore.GetVersion();
                var    targetFrameworks = _projectTargetFrameworksProvider.GetProjectTargetFrameworks();
                var    extensionLoadedAnalyticsEvent = new ExtensionLoadedAnalyticsEvent(DateTime.UtcNow, userUniqueId, ideName, ideVersion, extensionVersion, targetFrameworks);
                _analyticsTransmitterSink.TransmitExtensionLoadedEvent(extensionLoadedAnalyticsEvent);
            }
            catch (Exception)
            {
                // catch all exceptions since we do not want to break the whole extension simply because data transmission failed
            }
        }