Skip to content
This repository has been archived by the owner on Jun 26, 2023. It is now read-only.

Commit

Permalink
version checking refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
osoykan committed Oct 28, 2016
1 parent 7c9a727 commit 86f91cc
Show file tree
Hide file tree
Showing 9 changed files with 134 additions and 76 deletions.
18 changes: 16 additions & 2 deletions src/DynamicTranslator.Wpf/App.xaml.cs
Expand Up @@ -71,7 +71,14 @@ private void HandleExceptionsOrNothing()
logger.Object.Error($"Unhandled Exception occured: {args.ExceptionObject.ToString()}");
}
googleClient.Object.TrackException(args.ExceptionObject.ToString(), false);
try
{
googleClient.Object.TrackException(args.ExceptionObject.ToString(), false);
}
catch (Exception)
{
//throw;
}
}
}
};
Expand All @@ -89,7 +96,14 @@ private void HandleExceptionsOrNothing()
logger.Object.Error($"Unhandled Exception occured: {exception.ToString()}");
}
googleClient.Object.TrackException(exception.ToString(), false);
try
{
googleClient.Object.TrackException(exception.ToString(), false);
}
catch (Exception)
{
//throw;
}
}
}
return true;
Expand Down
75 changes: 42 additions & 33 deletions src/DynamicTranslator.Wpf/Observers/Finder.cs
Expand Up @@ -16,8 +16,6 @@
using DynamicTranslator.Service.GoogleAnalytics;
using DynamicTranslator.Wpf.Notification;

using Nito.AsyncEx.Synchronous;

namespace DynamicTranslator.Wpf.Observers
{
public class Finder : IObserver<EventPattern<WhenClipboardContainsTextEventArgs>>, ISingletonDependency
Expand Down Expand Up @@ -53,53 +51,64 @@ public class Finder : IObserver<EventPattern<WhenClipboardContainsTextEventArgs>

public void OnError(Exception error) { }

public async void OnNext(EventPattern<WhenClipboardContainsTextEventArgs> value)
public void OnNext(EventPattern<WhenClipboardContainsTextEventArgs> value)
{
await Task.Run(async () =>
Task.Run(async () =>
{
var currentString = value.EventArgs.CurrentString;
if (_previousString == currentString)
try
{
return;
}
var currentString = value.EventArgs.CurrentString;
if (_previousString == currentString)
{
return;
}
_previousString = currentString;
Maybe<string> failedResults;
_previousString = currentString;
Maybe<string> failedResults;
var fromLanguageExtension = await _languageDetector.DetectLanguage(currentString);
var results = await GetMeansFromCache(currentString, fromLanguageExtension);
var findedMeans = await _resultOrganizer.OrganizeResult(results, currentString, out failedResults).ConfigureAwait(false);
var fromLanguageExtension = await _languageDetector.DetectLanguage(currentString);
var results = await GetMeansFromCache(currentString, fromLanguageExtension);
var findedMeans = await _resultOrganizer.OrganizeResult(results, currentString, out failedResults).ConfigureAwait(false);
await Notify(currentString, findedMeans);
await Notify(currentString, failedResults);
await Trace(currentString, fromLanguageExtension);
await Notify(currentString, findedMeans);
await Notify(currentString, failedResults);
await Trace(currentString, fromLanguageExtension);
}
catch (Exception ex)
{
await Notify("Error", new Maybe<string>(ex.Message));
}
});
}

private async Task Trace(string currentString, string fromLanguageExtension)
private Task Trace(string currentString, string fromLanguageExtension)
{
await _googleAnalytics.TrackEventAsync("DynamicTranslator",
"Translate",
$"{currentString} | {fromLanguageExtension} - {_configuration.ApplicationConfiguration.ToLanguage.Extension} | v{ApplicationVersion.GetCurrentVersion()} ",
null).ConfigureAwait(false);

await _googleAnalytics.TrackAppScreenAsync("DynamicTranslator",
ApplicationVersion.GetCurrentVersion(),
"dynamictranslator",
"dynamictranslator",
"notification").ConfigureAwait(false);
_googleAnalytics.TrackEventAsync("DynamicTranslator",
"Translate",
$"{currentString} | {fromLanguageExtension} - {_configuration.ApplicationConfiguration.ToLanguage.Extension} | v{ApplicationVersion.GetCurrentVersion()} ",
null).ConfigureAwait(false);

_googleAnalytics.TrackAppScreenAsync("DynamicTranslator",
ApplicationVersion.GetCurrentVersion(),
"dynamictranslator",
"dynamictranslator",
"notification").ConfigureAwait(false);

return Task.FromResult(0);
}

private async Task Notify(string currentString, Maybe<string> findedMeans)
private 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()
).ConfigureAwait(false);
return _notifier.AddNotificationAsync(currentString,
ImageUrls.NotificationUrl,
findedMeans.DefaultIfEmpty(string.Empty).First()
);
}

return Task.FromResult(0);
}

private Task<TranslateResult[]> GetMeansFromCache(string currentString, string fromLanguageExtension)
Expand Down
18 changes: 11 additions & 7 deletions src/DynamicTranslator.Wpf/ViewModel/MainWindow.xaml.cs
Expand Up @@ -13,6 +13,7 @@
using DynamicTranslator.Constants;
using DynamicTranslator.Extensions;
using DynamicTranslator.LanguageManagement;
using DynamicTranslator.Runtime;
using DynamicTranslator.Wpf.Extensions;

using Octokit;
Expand Down Expand Up @@ -123,16 +124,19 @@ private async Task CheckVersion()
{
var release = await GetReleaseFromCache(gitHubClient);

var version = release.TagName;
var incomingVersion = release.TagName;

if (!ApplicationVersion.Is(version))
using (var versionChecker = IocManager.Instance.ResolveAsDisposable<IVersionChecker>())
{
await this.DispatchingAsync(() =>
if (versionChecker.Object.IsNew(incomingVersion))
{
_newVersionButton.Visibility = Visibility.Visible;
_newVersionButton.Content = $"A new version {version} released, update now!";
_configurations.ApplicationConfiguration.UpdateLink = release.Assets.FirstOrDefault()?.BrowserDownloadUrl;
});
await this.DispatchingAsync(() =>
{
_newVersionButton.Visibility = Visibility.Visible;
_newVersionButton.Content = $"A new version {incomingVersion} released, update now!";
_configurations.ApplicationConfiguration.UpdateLink = release.Assets.FirstOrDefault()?.BrowserDownloadUrl;
});
}
}
}
}
Expand Down
7 changes: 1 addition & 6 deletions src/DynamicTranslator/ApplicationVersion.cs
Expand Up @@ -2,16 +2,11 @@
{
public static class ApplicationVersion
{
public const string CurrentVersion = "3.4.1";
public const string CurrentVersion = "3.4.2";

public static string GetCurrentVersion()
{
return CurrentVersion;
}

public static bool Is(string version)
{
return CurrentVersion == version;
}
}
}
2 changes: 2 additions & 0 deletions src/DynamicTranslator/DynamicTranslator.csproj
Expand Up @@ -139,6 +139,8 @@
<Compile Include="LanguageManagement\Language.cs" />
<Compile Include="LanguageManagement\LanguageExtensions.cs" />
<Compile Include="LanguageManagement\LanguageMapping.cs" />
<Compile Include="Runtime\IVersionChecker.cs" />
<Compile Include="Runtime\VersionChecker.cs" />
<Compile Include="Translator.cs" />
<Compile Include="Constants\CacheNames.cs" />
<Compile Include="Constants\Headers.cs" />
Expand Down
6 changes: 3 additions & 3 deletions src/DynamicTranslator/GoogleAnalyticsTracker.cs
Expand Up @@ -20,11 +20,11 @@ public GoogleAnalyticsTracker(IGoogleAnalyticsService googleAnalyticsService)

public void OnError(Exception error) {}

public async void OnNext(long value)
public void OnNext(long value)
{
await Task.Run(async () =>
Task.Run(() =>
{
await _googleAnalyticsService.TrackAppScreenAsync("DynamicTranslator",
_googleAnalyticsService.TrackAppScreenAsync("DynamicTranslator",
ApplicationVersion.GetCurrentVersion(),
"dynamictranslator",
"dynamictranslator",
Expand Down
9 changes: 9 additions & 0 deletions src/DynamicTranslator/Runtime/IVersionChecker.cs
@@ -0,0 +1,9 @@
namespace DynamicTranslator.Runtime
{
public interface IVersionChecker
{
bool IsNew(string incomingVersion);

bool IsEqual(string version);
}
}
25 changes: 25 additions & 0 deletions src/DynamicTranslator/Runtime/VersionChecker.cs
@@ -0,0 +1,25 @@
using System;

using Abp.Dependency;

namespace DynamicTranslator.Runtime
{
public class VersionChecker : IVersionChecker, ITransientDependency
{
public bool IsNew(string incomingVersion)
{
var currentVersion = new Version(ApplicationVersion.GetCurrentVersion());
var newVersion = new Version(incomingVersion);

return newVersion > currentVersion;
}

public bool IsEqual(string version)
{
var currentVersion = new Version(ApplicationVersion.GetCurrentVersion());
var versionToCheck = new Version(version);

return versionToCheck == currentVersion;
}
}
}

0 comments on commit 86f91cc

Please sign in to comment.