add installer update info to check for updates WIP

This commit is contained in:
IsWaffle 2023-07-29 23:00:13 -04:00
parent 4f0eba1ac8
commit e70e30ff57
5 changed files with 110 additions and 8 deletions

View File

@ -20,8 +20,6 @@ public class ReleaseCheckTask : InstallerTaskBase
{
try
{
Configuration.Default.BasePath = "https://dev.sp-tarkov.com/api/v1";
var repo = new RepositoryApi(Configuration.Default);
SetStatus("Checking SPT Releases", "", null, ProgressStyle.Indeterminate);

View File

@ -0,0 +1,92 @@
using Gitea.Api;
using Gitea.Client;
using ReactiveUI;
using Serilog;
using System.Threading.Tasks;
using System.Windows.Input;
namespace SPTInstaller.Models;
public class InstallerUpdateInfo : ReactiveObject
{
private bool _updateAvailable;
public bool UpdateAvailable
{
get => _updateAvailable;
set => this.RaiseAndSetIfChanged(ref _updateAvailable, value);
}
private Version _currentVersion;
public Version CurrentVersion
{
get => _currentVersion;
set => this.RaiseAndSetIfChanged(ref _currentVersion, value);
}
private Version _newVersion;
public Version NewVersion
{
get => _newVersion;
set => this.RaiseAndSetIfChanged(ref _newVersion, value);
}
private bool _checkingForUpdates;
public bool CheckingForUpdates
{
get => _checkingForUpdates;
set => this.RaiseAndSetIfChanged(ref _checkingForUpdates, value);
}
public async Task<bool> CheckForUpdates()
{
CheckingForUpdates = true;
try
{
var repo = new RepositoryApi(Configuration.Default);
var releases = await repo.RepoListReleasesAsync("CWX", "SPT-AKI-Installer");
if (releases == null || releases.Count == 0)
return false;
var latest = releases.FindAll(x => !x.Prerelease)[0];
if (latest == null)
return false;
var latestVersion = new Version(latest.TagName);
if (latestVersion == null || latestVersion <= CurrentVersion)
return false;
NewVersion = latestVersion;
UpdateAvailable = true;
CheckingForUpdates = false;
return true;
}
catch (Exception ex)
{
Log.Logger.Error(ex, "Failed to check for updates");
}
CheckingForUpdates = false;
return false;
}
public ICommand UpdateInstaller { get; set; }
public InstallerUpdateInfo(Version? currentVersion)
{
if (currentVersion == null)
return;
CurrentVersion = currentVersion;
UpdateInstaller = ReactiveCommand.Create(() =>
{
// TODO: update installer here
});
}
}

View File

@ -9,8 +9,8 @@
<PackageIcon>icon.ico</PackageIcon>
<ApplicationIcon>Assets\icon.ico</ApplicationIcon>
<Configurations>Debug;Release;TEST</Configurations>
<AssemblyVersion>2.5</AssemblyVersion>
<FileVersion>2.5</FileVersion>
<AssemblyVersion>2.6</AssemblyVersion>
<FileVersion>2.6</FileVersion>
</PropertyGroup>
<ItemGroup>

View File

@ -1,7 +1,10 @@
using Avalonia;
using Gitea.Client;
using ReactiveUI;
using Serilog;
using SPTInstaller.Models;
using System.Reflection;
using System.Threading.Tasks;
namespace SPTInstaller.ViewModels;
@ -19,13 +22,22 @@ public class MainWindowViewModel : ReactiveObject, IActivatableViewModel, IScree
public MainWindowViewModel()
{
string? version = Assembly.GetExecutingAssembly().GetName()?.Version?.ToString();
Configuration.Default.BasePath = "https://dev.sp-tarkov.com/api/v1";
Title = $"SPT Installer {"v" + version ?? "--unknown version--"}";
Version? version = Assembly.GetExecutingAssembly().GetName()?.Version;
Title = $"SPT Installer {"v" + version?.ToString() ?? "--unknown version--"}";
Log.Information($"========= {Title} Started =========");
Log.Information(Environment.OSVersion.VersionString);
var updateInfo = new InstallerUpdateInfo(version);
Task.Run(async () =>
{
await updateInfo.CheckForUpdates();
});
Router.Navigate.Execute(new PreChecksViewModel(this));
}

View File

@ -1,4 +1,4 @@
<Window xmlns="https://github.com/avaloniaui"
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:SPTInstaller.ViewModels"
xmlns:rxui="using:Avalonia.ReactiveUI"
@ -16,7 +16,7 @@
ExtendClientAreaTitleBarHeightHint="-1"
Background="{StaticResource AKI_Background_Light}"
>
<Window.Styles>
<StyleInclude Source="/Assets/Styles.axaml"/>
</Window.Styles>