mirror of
https://github.com/9ParsonsB/Pulsar.git
synced 2025-07-02 00:43:42 -04:00
feat: update check
This commit is contained in:
@ -1,8 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using Avalonia.Controls;
|
||||
using Observatory.Framework.Interfaces;
|
||||
using Observatory.UI.Models;
|
||||
@ -16,9 +18,12 @@ namespace Observatory.UI.ViewModels
|
||||
private readonly ObservableCollection<IObservatoryWorker> workers;
|
||||
private readonly ObservableCollection<CoreModel> tabs;
|
||||
private string toggleButtonText;
|
||||
private bool _UpdateAvailable;
|
||||
|
||||
public CoreViewModel(IEnumerable<(IObservatoryWorker plugin, PluginManagement.PluginManager.PluginStatus signed)> workers, IEnumerable<(IObservatoryNotifier plugin, PluginManagement.PluginManager.PluginStatus signed)> notifiers)
|
||||
{
|
||||
_UpdateAvailable = CheckUpdate();
|
||||
|
||||
this.notifiers = new ObservableCollection<IObservatoryNotifier>(notifiers.Select(p => p.plugin));
|
||||
this.workers = new ObservableCollection<IObservatoryWorker>(workers.Select(p => p.plugin));
|
||||
ToggleButtonText = "Start Monitor";
|
||||
@ -50,7 +55,7 @@ namespace Observatory.UI.ViewModels
|
||||
|
||||
|
||||
tabs.Add(new CoreModel() { Name = "Core", UI = new BasicUIViewModel(new ObservableCollection<object>()) { UIType = Framework.PluginUI.UIType.Core } });
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void ReadAll()
|
||||
@ -93,6 +98,13 @@ namespace Observatory.UI.ViewModels
|
||||
Process.Start(donateOpen);
|
||||
}
|
||||
|
||||
public void GetUpdate()
|
||||
{
|
||||
ProcessStartInfo githubOpen = new("https://github.com/Xjph/ObservatoryCore/releases");
|
||||
githubOpen.UseShellExecute = true;
|
||||
Process.Start(githubOpen);
|
||||
}
|
||||
|
||||
public string ToggleButtonText
|
||||
{
|
||||
get => toggleButtonText;
|
||||
@ -136,5 +148,51 @@ namespace Observatory.UI.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
private bool CheckUpdate()
|
||||
{
|
||||
try
|
||||
{
|
||||
string releasesResponse;
|
||||
|
||||
var request = new HttpRequestMessage
|
||||
{
|
||||
Method = HttpMethod.Get,
|
||||
RequestUri = new Uri("https://api.github.com/repos/xjph/ObservatoryCore/releases"),
|
||||
Headers = { { "User-Agent", "Xjph/ObservatoryCore" } }
|
||||
};
|
||||
|
||||
releasesResponse = HttpClient.SendRequest(request).Content.ReadAsStringAsync().Result;
|
||||
|
||||
if (!string.IsNullOrEmpty(releasesResponse))
|
||||
{
|
||||
var releases = System.Text.Json.JsonDocument.Parse(releasesResponse).RootElement.EnumerateArray();
|
||||
|
||||
foreach (var release in releases)
|
||||
{
|
||||
if (release.GetProperty("tag_name").ToString().CompareTo("v" + System.Reflection.Assembly.GetEntryAssembly().GetName().Version.ToString()) > 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private bool UpdateAvailable
|
||||
{
|
||||
get => _UpdateAvailable;
|
||||
set
|
||||
{
|
||||
this.RaiseAndSetIfChanged(ref _UpdateAvailable, value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user