public async void OnNext(EventPattern <WhenClipboardContainsTextEventArgs> value)
        {
            await Task.Run(async() =>
            {
                var currentString = value.EventArgs.CurrentString;

                if (previousString == currentString)
                {
                    return;
                }

                previousString = currentString;

                var fromLanguageExtension = await languageDetector.DetectLanguage(currentString);

                var results = await cache.GetAsync(currentString,
                                                   async() => await Task.WhenAll(meanFinderFactory.GetFinders().Select(t => t.Find(new TranslateRequest(currentString, fromLanguageExtension)))))
                              .ConfigureAwait(false);

                var findedMeans = await resultOrganizer.OrganizeResult(results, currentString).ConfigureAwait(false);

                await notifier.AddNotificationAsync(currentString, ImageUrls.NotificationUrl, findedMeans.DefaultIfEmpty(string.Empty).First()).ConfigureAwait(false);

                await googleAnalytics.TrackEventAsync("DynamicTranslator", "Translate", currentString, null).ConfigureAwait(false);

                await googleAnalytics.TrackAppScreenAsync("DynamicTranslator",
                                                          ApplicationVersion.GetCurrentVersion(),
                                                          "dynamictranslator",
                                                          "dynamictranslator",
                                                          "notification").ConfigureAwait(false);
            });
        }
Beispiel #2
0
 private async Task Notify(string currentString, Maybe <string> findedMeans)
 {
     if (!string.IsNullOrEmpty(findedMeans.DefaultIfEmpty(string.Empty).First()))
     {
         await _notifier.AddNotificationAsync(currentString,
                                              ImageUrls.NotificationUrl,
                                              findedMeans.DefaultIfEmpty(string.Empty).First()
                                              );
     }
 }
 public void Intercept(IInvocation invocation)
 {
     try
     {
         invocation.Proceed();
     }
     catch (Exception ex)
     {
         notifier.AddNotificationAsync(Titles.Exception, ImageUrls.NotificationUrl, ex.Message);
     }
 }
Beispiel #4
0
        private Task Notify(string currentString, Maybe <string> findedMeans)
        {
            if (!string.IsNullOrEmpty(findedMeans.DefaultIfEmpty(string.Empty).First()))
            {
                return(_notifier.AddNotificationAsync(currentString,
                                                      ImageUrls.NotificationUrl,
                                                      findedMeans.DefaultIfEmpty(string.Empty).First()
                                                      ));
            }

            return(Task.FromResult(0));
        }
        private void HandleException(IInvocation invocation, Exception ex)
        {
            var exceptionText = new StringBuilder()
                                .AppendLine("Exception Occured on:" + invocation.TargetType.Name)
                                .AppendLine(ex.Message)
                                .AppendLine(ex.InnerException?.Message ?? string.Empty)
                                .AppendLine(ex.StackTrace)
                                .ToString();

            notifier.AddNotificationAsync(Titles.Exception, ImageUrls.NotificationUrl, exceptionText);

            SendExceptionGoogleAnalyticsAsync(exceptionText, false);
        }