diff --git a/Discord Media Loader/Discord Media Loader.csproj b/Discord Media Loader/Discord Media Loader.csproj
index 3edf1f2..baf4c0f 100644
--- a/Discord Media Loader/Discord Media Loader.csproj
+++ b/Discord Media Loader/Discord Media Loader.csproj
@@ -57,6 +57,10 @@
..\packages\Nito.AsyncEx.3.0.1\lib\net45\Nito.AsyncEx.Enlightenment.dll
True
+
+ ..\packages\Octokit.0.24.1-alpha0001\lib\net45\Octokit.dll
+ True
+
..\packages\RestSharp.105.2.3\lib\net46\RestSharp.dll
True
@@ -78,6 +82,7 @@
+
Form
diff --git a/Discord Media Loader/Helper/VersionHelper.cs b/Discord Media Loader/Helper/VersionHelper.cs
new file mode 100644
index 0000000..bbe1ab9
--- /dev/null
+++ b/Discord Media Loader/Helper/VersionHelper.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json.Linq;
+using Octokit;
+
+namespace Discord_Media_Loader.Helper
+{
+ internal class VersionHelper
+ {
+ internal static Version CurrentVersion => Assembly.GetExecutingAssembly().GetName().Version;
+
+ internal static async Task GetLatestReleaseVersion()
+ {
+ var github = new GitHubClient(new ProductHeaderValue("DiscordMediaLoader"));
+ var tag =
+ (await github.Repository.Release.GetAll("Serraniel", "DiscordMediaLoader")).OrderBy(x => x.CreatedAt).First().TagName.Replace("v", "") ?? "";
+ var version = new Version(tag);
+ return version;
+ }
+
+ internal static async Task DownloadLatestReleaseVersion()
+ {
+ return await DownloadReleaseVersion(await GetLatestReleaseVersion());
+ }
+
+ internal static async Task DownloadReleaseVersion(Version version)
+ {
+ var github = new GitHubClient(new ProductHeaderValue("DiscordMediaLoader"));
+ var releaseVersion = (from release in (await github.Repository.Release.GetAll("Serraniel", "DiscordMediaLoader")) where release.TagName == $"v{version.Major}.{version.Minor}.{version.Build}.{version.Revision}" select release).First();
+ //where release.TagName == $"v{version.Major}.{version.Minor}.{version.Revision}.{version.Build}"
+ /*var r = releases.ElementAt(0);
+ if (r.TagName == $"v{version.Major}.{version.Minor}.{version.Build}.{version.Revision}")
+ {
+ var releaseVersion = releases.First();
+ return releaseVersion.Url;
+ }*/
+ return releaseVersion.ZipballUrl;
+ }
+ }
+}
diff --git a/Discord Media Loader/LoginForm.cs b/Discord Media Loader/LoginForm.cs
index 2286fe2..cf6f81e 100644
--- a/Discord Media Loader/LoginForm.cs
+++ b/Discord Media Loader/LoginForm.cs
@@ -1,5 +1,6 @@
using System;
using System.Windows.Forms;
+using Discord_Media_Loader.Helper;
namespace Discord_Media_Loader
{
diff --git a/Discord Media Loader/MainForm.Designer.cs b/Discord Media Loader/MainForm.Designer.cs
index 879ad82..4c544dd 100644
--- a/Discord Media Loader/MainForm.Designer.cs
+++ b/Discord Media Loader/MainForm.Designer.cs
@@ -48,7 +48,7 @@
this.lbCopyright = new System.Windows.Forms.Label();
this.lbGithub = new System.Windows.Forms.LinkLabel();
this.lbAbout = new System.Windows.Forms.LinkLabel();
- this.lbVersion = new System.Windows.Forms.Label();
+ this.lbVersion = new System.Windows.Forms.LinkLabel();
((System.ComponentModel.ISupportInitialize)(this.nupThreadCount)).BeginInit();
this.SuspendLayout();
//
@@ -241,10 +241,12 @@
//
this.lbVersion.Location = new System.Drawing.Point(328, 274);
this.lbVersion.Name = "lbVersion";
- this.lbVersion.Size = new System.Drawing.Size(100, 13);
- this.lbVersion.TabIndex = 25;
+ this.lbVersion.Size = new System.Drawing.Size(100, 15);
+ this.lbVersion.TabIndex = 26;
+ this.lbVersion.TabStop = true;
this.lbVersion.Text = "version";
this.lbVersion.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ this.lbVersion.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lbVersion_LinkClicked);
//
// MainForm
//
@@ -305,6 +307,6 @@
private System.Windows.Forms.Label lbCopyright;
private System.Windows.Forms.LinkLabel lbGithub;
private System.Windows.Forms.LinkLabel lbAbout;
- private System.Windows.Forms.Label lbVersion;
+ private System.Windows.Forms.LinkLabel lbVersion;
}
}
\ No newline at end of file
diff --git a/Discord Media Loader/MainForm.cs b/Discord Media Loader/MainForm.cs
index 957aa1e..72b1dfe 100644
--- a/Discord Media Loader/MainForm.cs
+++ b/Discord Media Loader/MainForm.cs
@@ -9,6 +9,7 @@ using System.Threading.Tasks;
using System.Windows.Forms;
using Discord;
using Discord.Net;
+using Discord_Media_Loader.Helper;
using ConnectionState = Discord.ConnectionState;
namespace Discord_Media_Loader
@@ -86,9 +87,9 @@ namespace Discord_Media_Loader
private async void MainForm_Shown(object sender, EventArgs e)
{
- lbVersion.Text = $"v{Assembly.GetExecutingAssembly().GetName().Version}";
-
+ lbVersion.Text = $"v{VersionHelper.CurrentVersion}";
SetEnabled(false);
+ await CheckForUpdates();
if (!await Login())
{
@@ -119,7 +120,6 @@ namespace Discord_Media_Loader
foreach (Control c in Controls)
{
SetControlPropertyThreadSafe(c, "Enabled", enabled);
- //c.Enabled = enabled;
}
}
@@ -259,7 +259,7 @@ namespace Discord_Media_Loader
}
msgScanCount++;
- OnUpdateProgress(new UpdateProgessEventArgs() { Downloaded = downloadCount, Scanned = msgScanCount});
+ OnUpdateProgress(new UpdateProgessEventArgs() { Downloaded = downloadCount, Scanned = msgScanCount });
}
stop = stop || messages.Length < limit;
@@ -287,6 +287,26 @@ namespace Discord_Media_Loader
{
MessageBox.Show(Properties.Resources.AboutString);
}
+
+ private async Task CheckForUpdates(bool manually = false)
+ {
+ if (VersionHelper.CurrentVersion < await VersionHelper.GetLatestReleaseVersion())
+ {
+ if (MessageBox.Show("A new version is available, do you want to update now?", "Update available", MessageBoxButtons.YesNo) != DialogResult.Yes)
+ return;
+
+ Process.Start(await VersionHelper.DownloadLatestReleaseVersion());
+ }
+ else if (manually)
+ {
+ MessageBox.Show("You already use the newest version.");
+ }
+ }
+
+ private void lbVersion_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ CheckForUpdates(true);
+ }
}
internal class UpdateProgessEventArgs : EventArgs
diff --git a/Discord Media Loader/Program.cs b/Discord Media Loader/Program.cs
index 837140a..bd15ed5 100644
--- a/Discord Media Loader/Program.cs
+++ b/Discord Media Loader/Program.cs
@@ -1,5 +1,6 @@
using System;
using System.Windows.Forms;
+using Discord_Media_Loader.Helper;
namespace Discord_Media_Loader
{
@@ -10,7 +11,7 @@ namespace Discord_Media_Loader
///
[STAThread]
static void Main()
- {
+ {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
diff --git a/Discord Media Loader/Properties/AssemblyInfo.cs b/Discord Media Loader/Properties/AssemblyInfo.cs
index 05ce28e..ff6dfd2 100644
--- a/Discord Media Loader/Properties/AssemblyInfo.cs
+++ b/Discord Media Loader/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.1.1.58")]
-[assembly: AssemblyFileVersion("0.1.1.58")]
+[assembly: AssemblyVersion("0.1.98.0")]
+[assembly: AssemblyFileVersion("0.1.98.0")]
diff --git a/Discord Media Loader/packages.config b/Discord Media Loader/packages.config
index 0becf02..6f2b978 100644
--- a/Discord Media Loader/packages.config
+++ b/Discord Media Loader/packages.config
@@ -3,6 +3,7 @@
+
\ No newline at end of file