show update log after upgraded

This commit is contained in:
Paddy Xu
2017-07-23 22:39:44 +03:00
parent 78fe8d2558
commit 2820b840e4
3 changed files with 54 additions and 30 deletions

View File

@@ -94,6 +94,8 @@ namespace QuickLook
if (!Settings.Default.Upgraded) if (!Settings.Default.Upgraded)
return; return;
Updater.CollectAndShowReleaseNotes();
Settings.Default.Upgrade(); Settings.Default.Upgrade();
Settings.Default.Upgraded = false; Settings.Default.Upgraded = false;
Settings.Default.Save(); Settings.Default.Save();

View File

@@ -38,15 +38,10 @@ namespace QuickLook.Helpers
{ {
try try
{ {
var web = new WebClientEx(15 * 1000); var json = DownloadJson("https://api.github.com/repos/xupefei/QuickLook/releases/latest");
web.Headers.Add(HttpRequestHeader.UserAgent, "Wget/1.9.1");
var response = web.DownloadDataStream("https://api.github.com/repos/xupefei/QuickLook/releases"); var nVersion = (string) json["tag_name"];
//nVersion = "9.2.1";
var json = JsonConvert.DeserializeObject<dynamic>(new StreamReader(response).ReadToEnd());
var nVersion = (string) json[0]["tag_name"];
//nVersion = "0.2.1";
if (new Version(nVersion) <= Assembly.GetExecutingAssembly().GetName().Version) if (new Version(nVersion) <= Assembly.GetExecutingAssembly().GetName().Version)
{ {
@@ -57,15 +52,11 @@ namespace QuickLook.Helpers
return; return;
} }
string notes = CollectReleaseNotes(json); CollectAndShowReleaseNotes();
var changeLogPath = Path.GetTempFileName() + ".md";
File.WriteAllText(changeLogPath, notes);
Application.Current.Dispatcher.Invoke( Application.Current.Dispatcher.Invoke(
() => () =>
{ {
ViewWindowManager.GetInstance().InvokeViewer(changeLogPath);
TrayIconManager.GetInstance().ShowNotification("", TrayIconManager.GetInstance().ShowNotification("",
string.Format(TranslationHelper.GetString("Update_Found"), nVersion), string.Format(TranslationHelper.GetString("Update_Found"), nVersion),
timeout: 20000, timeout: 20000,
@@ -84,17 +75,48 @@ namespace QuickLook.Helpers
}); });
} }
private static string CollectReleaseNotes(dynamic json) public static void CollectAndShowReleaseNotes()
{ {
var notes = string.Empty; Task.Run(() =>
foreach (var item in json)
{ {
notes += $"# {item["name"]}\r\n\r\n"; try
notes += item["body"] + "\r\n\r\n"; {
} var json = DownloadJson("https://api.github.com/repos/xupefei/QuickLook/releases");
return notes; var notes = string.Empty;
foreach (var item in json)
{
notes += $"# {item["name"]}\r\n\r\n";
notes += item["body"] + "\r\n\r\n";
}
var changeLogPath = Path.GetTempFileName() + ".md";
File.WriteAllText(changeLogPath, notes);
Application.Current.Dispatcher.Invoke(() => ViewWindowManager.GetInstance()
.InvokeViewer(changeLogPath));
}
catch (Exception e)
{
Debug.WriteLine(e.Message);
Application.Current.Dispatcher.Invoke(
() => TrayIconManager.GetInstance().ShowNotification("",
string.Format(TranslationHelper.GetString("Update_Error"), e.Message)));
}
});
}
private static dynamic DownloadJson(string url)
{
var web = new WebClientEx(15 * 1000);
web.Headers.Add(HttpRequestHeader.UserAgent, "Wget/1.9.1");
var response =
web.DownloadDataStream(url);
var json = JsonConvert.DeserializeObject<dynamic>(new StreamReader(response).ReadToEnd());
return json;
} }
} }
} }

View File

@@ -30,13 +30,13 @@ namespace QuickLook
internal class ViewWindowManager : IDisposable internal class ViewWindowManager : IDisposable
{ {
private static ViewWindowManager _instance; private static ViewWindowManager _instance;
private MainWindowNoTransparent _viewWindowNoTransparent;
private MainWindowTransparent _viewWindowTransparent;
private MainWindowTransparent _currentMainWindow; private MainWindowTransparent _currentMainWindow;
private string _path = string.Empty; private string _path = string.Empty;
private MainWindowNoTransparent _viewWindowNoTransparent;
private MainWindowTransparent _viewWindowTransparent;
internal ViewWindowManager() internal ViewWindowManager()
{ {
_viewWindowTransparent = new MainWindowTransparent(); _viewWindowTransparent = new MainWindowTransparent();
@@ -148,11 +148,11 @@ namespace QuickLook
if (e.FocusedFile == _path) if (e.FocusedFile == _path)
return; return;
Debug.WriteLine($"SwitchPreviewRemoteInvoke: {e.FocusedFile}");
if (string.IsNullOrEmpty(e.FocusedFile)) if (string.IsNullOrEmpty(e.FocusedFile))
return; return;
Debug.WriteLine($"SwitchPreviewRemoteInvoke: {e.FocusedFile}");
_currentMainWindow?.Dispatcher.BeginInvoke(new Action(SwitchPreview), DispatcherPriority.ApplicationIdle); _currentMainWindow?.Dispatcher.BeginInvoke(new Action(SwitchPreview), DispatcherPriority.ApplicationIdle);
} }
@@ -173,13 +173,13 @@ namespace QuickLook
FocusMonitor.GetInstance().Heartbeat -= SwitchPreviewRemoteInvoke; FocusMonitor.GetInstance().Heartbeat -= SwitchPreviewRemoteInvoke;
} }
} }
internal void ForgetCurrentWindow() internal void ForgetCurrentWindow()
{ {
StopFocusMonitor(); StopFocusMonitor();
if (ReferenceEquals(_currentMainWindow, _viewWindowTransparent)) if (ReferenceEquals(_currentMainWindow, _viewWindowTransparent))
_viewWindowTransparent=new MainWindowTransparent(); _viewWindowTransparent = new MainWindowTransparent();
else else
_viewWindowNoTransparent = new MainWindowNoTransparent(); _viewWindowNoTransparent = new MainWindowNoTransparent();
@@ -188,7 +188,7 @@ namespace QuickLook
internal bool InvokeViewer(string path = null, bool closeIfSame = false) internal bool InvokeViewer(string path = null, bool closeIfSame = false)
{ {
if(closeIfSame) if (closeIfSame)
if (_currentMainWindow.Visibility == Visibility.Visible && path == _path) if (_currentMainWindow.Visibility == Visibility.Visible && path == _path)
{ {
ClosePreview(); ClosePreview();
@@ -223,7 +223,7 @@ namespace QuickLook
: _viewWindowNoTransparent; : _viewWindowNoTransparent;
if (!ReferenceEquals(oldWindow, _currentMainWindow)) if (!ReferenceEquals(oldWindow, _currentMainWindow))
oldWindow.BeginHide(); oldWindow.BeginHide();
_currentMainWindow.BeginShow(matchedPlugin, _path, CurrentPluginFailed); _currentMainWindow.BeginShow(matchedPlugin, _path, CurrentPluginFailed);
} }