Skip to content

Commit 4ed3f53

Browse files
committed
Added simple check for newer releases
1 parent 1d05a1c commit 4ed3f53

7 files changed

Lines changed: 110 additions & 5 deletions

File tree

MessageCommunicator.TestGui/MainWindow.xaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,7 @@
164164

165165
<!-- Status bar -->
166166
<Grid Grid.Row="2" Grid.ColumnSpan="3">
167-
<StackPanel HorizontalAlignment="Right">
168-
<TextBlock Margin="3" Text="Status text" />
169-
</StackPanel>
167+
<localViews:ReleaseCheckView HorizontalAlignment="Right" />
170168
</Grid>
171169
</Grid>
172170

MessageCommunicator.TestGui/MessageCommunicator.TestGui.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@
2828
<AvaloniaResource Include="Assets\Docs\Resources\MessageRecognizerSettings.png" />
2929
<None Remove="Assets\MessageCommunicator.ico" />
3030
<AvaloniaResource Include="Assets\MessageCommunicator.ico" />
31+
<AvaloniaResource Update="Views\_ReleaseCheck\SendMessageView.xaml">
32+
<Generator>MSBuild:Compile</Generator>
33+
</AvaloniaResource>
34+
<Compile Update="Views\_ReleaseCheck\ReleaseCheckView.xaml.cs">
35+
<DependentUpon>ReleaseCheckView.xaml</DependentUpon>
36+
</Compile>
3137
</ItemGroup>
3238
<ItemGroup>
3339
<PackageReference Include="Avalonia" Version="0.9.12" />
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<UserControl xmlns="https://github.com/avaloniaui"
2+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
4+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5+
xmlns:local="clr-namespace:MessageCommunicator.TestGui.Views;assembly=MessageCommunicator.TestGui"
6+
xmlns:localRoot="clr-namespace:MessageCommunicator.TestGui;assembly=MessageCommunicator.TestGui"
7+
mc:Ignorable="d"
8+
d:Width="400" d:Height="400"
9+
x:Class="MessageCommunicator.TestGui.Views.ReleaseCheckView">
10+
<StackPanel Orientation="Horizontal">
11+
<TextBlock Text="{Binding Path=StatusText}"
12+
Margin="2"/>
13+
</StackPanel>
14+
</UserControl>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using Avalonia.Controls;
2+
using Avalonia.Markup.Xaml;
3+
4+
namespace MessageCommunicator.TestGui.Views
5+
{
6+
public class ReleaseCheckView : OwnUserControl<ReleaseCheckViewModel>
7+
{
8+
public ReleaseCheckView()
9+
{
10+
AvaloniaXamlLoader.Load(this);
11+
12+
if (!Design.IsDesignMode)
13+
{
14+
var viewModel = new ReleaseCheckViewModel();
15+
viewModel.TriggerRequest();
16+
17+
this.DataContext = viewModel;
18+
}
19+
}
20+
}
21+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
using System.Threading.Tasks;
2+
using Avalonia.X11;
3+
using ReactiveUI;
4+
5+
namespace MessageCommunicator.TestGui.Views
6+
{
7+
public class ReleaseCheckViewModel : OwnViewModelBase
8+
{
9+
private string _statusText;
10+
11+
public string StatusText
12+
{
13+
get => _statusText;
14+
set
15+
{
16+
if (_statusText != value)
17+
{
18+
_statusText = value;
19+
this.RaisePropertyChanged(nameof(this.StatusText));
20+
}
21+
}
22+
}
23+
24+
public ReleaseCheckViewModel()
25+
{
26+
_statusText = "Checking for newer releases...";
27+
}
28+
29+
public void TriggerRequest()
30+
{
31+
ReleaseOverview.GetLatestReleaseAsync()
32+
.ContinueWith(task =>
33+
{
34+
if(task.IsFaulted){ this.ProcessLatestReleaseInfo(null); }
35+
else
36+
{
37+
this.ProcessLatestReleaseInfo(task.Result);
38+
}
39+
}, TaskScheduler.FromCurrentSynchronizationContext());
40+
}
41+
42+
public void ProcessLatestReleaseInfo(ReleaseInformation? releaseInfo)
43+
{
44+
if (releaseInfo == null)
45+
{
46+
this.StatusText = "Unable to check for newer releases";
47+
return;
48+
}
49+
50+
this.StatusText = $"Newest: {releaseInfo.Version}";
51+
}
52+
}
53+
}

MessageCommunicator.TestGui/_Util/_ReleaseOverview/ReleaseOverview.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class ReleaseOverview
1414
{
1515
private const string URL = "https://www.rolandk.de/releases/message_communicator.json";
1616

17-
public static async Task<ReleaseInformation?> GetLatestRelease()
17+
public static async Task<ReleaseInformation?> GetLatestReleaseAsync()
1818
{
1919
using (HttpClient client = new HttpClient())
2020
{
@@ -32,7 +32,7 @@ public class ReleaseOverview
3232
using (var jsonReader = new JsonTextReader(inStreamReader))
3333
{
3434
dynamic jObject = JsonSerializer.CreateDefault().Deserialize(jsonReader!)!;
35-
string version = jObject.tag_name;
35+
string version = jObject[0].version;
3636
return new ReleaseInformation(
3737
Version.Parse(version));
3838
}

MessageCommunicator.sln

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,18 @@ EndProject
5252
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MessageCommunicator.SerialPorts", "MessageCommunicator.SerialPorts\MessageCommunicator.SerialPorts.csproj", "{1AC0E46B-95A6-48CC-8435-3B084A01151D}"
5353
EndProject
5454
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{43317525-1226-4299-9444-6DBF06A5F943}"
55+
ProjectSection(SolutionItems) = preProject
56+
docs\ByteStreamHandler.md = docs\ByteStreamHandler.md
57+
docs\Home.md = docs\Home.md
58+
docs\MessageRecognizer.md = docs\MessageRecognizer.md
59+
docs\Profile.md = docs\Profile.md
60+
EndProjectSection
61+
EndProject
62+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Resources", "Resources", "{EA6DE818-9931-4DA6-B34A-7E9D285B588C}"
63+
ProjectSection(SolutionItems) = preProject
64+
docs\Resources\ByteStreamHandlerSettings.png = docs\Resources\ByteStreamHandlerSettings.png
65+
docs\Resources\MessageRecognizerSettings.png = docs\Resources\MessageRecognizerSettings.png
66+
EndProjectSection
5567
EndProject
5668
Global
5769
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -120,6 +132,7 @@ Global
120132
{61C4FD8C-A0BC-4050-BD6C-1D48B45302E7} = {912C279A-570B-490B-B610-5357670BF0D8}
121133
{2B5F93AC-82F3-486D-8A44-07E2E21FA6A9} = {8E0807B9-6F5F-4BB1-AA23-2AED4FD99B71}
122134
{C55F0A61-2E52-49DF-8BF0-86288AC9DAC6} = {8E0807B9-6F5F-4BB1-AA23-2AED4FD99B71}
135+
{EA6DE818-9931-4DA6-B34A-7E9D285B588C} = {43317525-1226-4299-9444-6DBF06A5F943}
123136
EndGlobalSection
124137
GlobalSection(ExtensibilityGlobals) = postSolution
125138
SolutionGuid = {F611EC5F-305C-4179-91F2-741C52DAAFA0}

0 commit comments

Comments
 (0)