1
0
mirror of https://github.com/chylex/TweetDuck.git synced 2025-04-23 12:15:48 +02:00

Add a -debugupdates command line argument to allow prereleases in update checker

This commit is contained in:
chylex 2016-11-23 02:08:33 +01:00
parent e0fe39195d
commit 391a90e1df
6 changed files with 40 additions and 10 deletions

View File

@ -35,7 +35,7 @@ private static UserConfig Config{
private FormWindowState prevState;
public FormBrowser(PluginManager pluginManager){
public FormBrowser(PluginManager pluginManager, UpdaterSettings updaterSettings){
InitializeComponent();
Text = Program.BrandName;
@ -73,7 +73,7 @@ public FormBrowser(PluginManager pluginManager){
UpdateTrayIcon();
this.updates = new UpdateHandler(browser, this);
this.updates = new UpdateHandler(browser, this, updaterSettings);
this.updates.UpdateAccepted += updates_UpdateAccepted;
}

View File

@ -13,6 +13,7 @@
using TweetDck.Core.Other.Settings.Export;
using TweetDck.Core.Handling;
using TweetDck.Core.Other;
using TweetDck.Updates;
[assembly: CLSCompliant(true)]
namespace TweetDck{
@ -153,7 +154,10 @@ private static void Main(){
plugins.PluginChangedState += (sender, args) => UserConfig.Save();
plugins.Reload();
FormBrowser mainForm = new FormBrowser(plugins);
FormBrowser mainForm = new FormBrowser(plugins, new UpdaterSettings{
AllowPreReleases = Args.HasFlag("-debugupdates")
});
Application.Run(mainForm);
if (mainForm.UpdateInstallerPath != null){

View File

@ -12,7 +12,12 @@
//
// Constant: Url that returns JSON data about latest version.
//
const updateCheckUrl = "https://api.github.com/repos/chylex/"+$TDU.brandName+"/releases/latest";
const updateCheckUrlLatest = "https://api.github.com/repos/chylex/"+$TDU.brandName+"/releases/latest";
//
// Constant: Url that returns JSON data about all versions, including prereleases.
//
const updateCheckUrlAll = "https://api.github.com/repos/chylex/"+$TDU.brandName+"/releases";
//
// Function: Creates the update notification element. Removes the old one if already exists.
@ -135,14 +140,20 @@
clearTimeout(updateCheckTimeoutID);
updateCheckTimeoutID = setTimeout(runUpdateCheck, 1000*60*60); // 1 hour
if (!$TDU.updateCheckEnabled && !force)return;
if (!$TDU.updateCheckEnabled && !force){
return;
}
$.getJSON(updateCheckUrl, function(response){
var tagName = response.tag_name;
var hasUpdate = tagName !== $TDU.versionTag && tagName !== $TDU.dismissedVersionTag && response.assets.length > 0;
var allowPre = $TDU.allowPreReleases;
$.getJSON(allowPre ? updateCheckUrlAll : updateCheckUrlLatest, function(response){
var release = allowPre ? response[0] : response;
var tagName = release.tag_name;
var hasUpdate = tagName !== $TDU.versionTag && tagName !== $TDU.dismissedVersionTag && release.assets.length > 0;
if (hasUpdate){
var obj = response.assets.find(asset => asset.name === updateFileName) || response.assets[0];
var obj = release.assets.find(asset => asset.name === updateFileName) || release.assets[0];
createUpdateNotificationElement(tagName, obj.browser_download_url);
}

View File

@ -238,6 +238,7 @@
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Resources\ScriptLoader.cs" />
<Compile Include="Updates\UpdaterSettings.cs" />
<None Include="Configuration\app.config" />
<None Include="Configuration\packages.config" />
</ItemGroup>

View File

@ -10,15 +10,18 @@ namespace TweetDck.Updates{
class UpdateHandler{
private readonly ChromiumWebBrowser browser;
private readonly FormBrowser form;
private readonly UpdaterSettings settings;
public event EventHandler<UpdateAcceptedEventArgs> UpdateAccepted;
public event EventHandler<UpdateCheckEventArgs> CheckFinished;
private int lastEventId;
public UpdateHandler(ChromiumWebBrowser browser, FormBrowser form){
public UpdateHandler(ChromiumWebBrowser browser, FormBrowser form, UpdaterSettings settings){
this.browser = browser;
this.form = form;
this.settings = settings;
browser.FrameLoadEnd += browser_FrameLoadEnd;
browser.RegisterJsObject("$TDU", new Bridge(this));
}
@ -71,6 +74,12 @@ public string DismissedVersionTag{
}
}
public bool AllowPreReleases{
get{
return owner.settings.AllowPreReleases;
}
}
public bool IsSystemSupported{
get{
return Environment.OSVersion.Version >= new Version("6.1"); // 6.1 NT version = Windows 7

View File

@ -0,0 +1,5 @@
namespace TweetDck.Updates{
class UpdaterSettings{
public bool AllowPreReleases { get; set; }
}
}