Skip to content

Commit 1f7d9dc

Browse files
Merge pull request #56 from BlazorData-Net/codex/add-version-check-in-mainlayout.razor
Check online version in main layout
2 parents 1f98c69 + 1a35b30 commit 1f7d9dc

1 file changed

Lines changed: 55 additions & 1 deletion

File tree

RFPResponsePOC/RFPResponsePOC.Client/Layout/MainLayout.razor

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
@using RFPResponseAPP.Client.Services
22
@using RFPResponseAPP.Model
33
@using RFPResponseAPP.Models
4+
@using System.Collections.Generic
45
@rendermode @(new InteractiveWebAssemblyRenderMode(prerender: false))
56
@inherits LayoutComponentBase
67
@implements IAsyncDisposable
@@ -11,6 +12,7 @@
1112
@inject SettingsService SettingsService
1213
@inject LogService _LogService
1314
@inject AppMetadata _AppMetadata
15+
@inject HttpClient Http
1416
<RadzenDialog />
1517
<RadzenNotification />
1618
<RadzenTooltip />
@@ -21,7 +23,14 @@
2123
<img src="images\\RFPResponseCreatorLogo_small.png" alt="RFP Response Creator Logo" class="logo me-3" style="height:40px; width: auto;" />
2224
</div>
2325
<div class="d-flex align-items-center">
24-
<a href="https://BlazorData.net/" target="_blank" class="me-2">BlazorData.net</a>
26+
@if (UpdateAvailable)
27+
{
28+
<a href="https://BlazorData.net/" target="_blank" class="me-2">* Update Available - Close web browser and reload *</a>
29+
}
30+
else
31+
{
32+
<a href="https://BlazorData.net/" target="_blank" class="me-2">BlazorData.net</a>
33+
}
2534
<RadzenButton Click="@(async () => await SaveSettingsaaAndCloseBrowserTab())" Disabled="@isSaving" Size="ButtonSize.ExtraSmall">
2635
@if (isSaving)
2736
{
@@ -60,6 +69,36 @@
6069
ZipService objZipService = new ZipService();
6170
private IJSObjectReference _browserModule;
6271
private bool isSaving;
72+
bool UpdateAvailable = false;
73+
private string versionLocal = string.Empty;
74+
private string versionPublished = string.Empty;
75+
76+
protected override async Task OnInitializedAsync()
77+
{
78+
try
79+
{
80+
var guid = SettingsService.Settings?.ApplicationSettings?.GUID;
81+
versionLocal = _AppMetadata.Version;
82+
83+
if (!string.IsNullOrEmpty(guid) && !string.IsNullOrEmpty(versionLocal))
84+
{
85+
var response = await Http.GetAsync($"https://blazordata.net/api/VersionOnline/GetRFPResponseCreatorVersionOnline?paramGUID={guid}&paramCurrentVersion={versionLocal}");
86+
response.EnsureSuccessStatusCode();
87+
versionPublished = await response.Content.ReadAsStringAsync();
88+
89+
if (ConvertToInteger(versionPublished) > ConvertToInteger(versionLocal))
90+
{
91+
UpdateAvailable = true;
92+
}
93+
}
94+
}
95+
catch (Exception ex)
96+
{
97+
await _LogService.WriteToLogAsync(ex.Message);
98+
}
99+
100+
await base.OnInitializedAsync();
101+
}
63102

64103
protected override async Task OnAfterRenderAsync(bool firstRender)
65104
{
@@ -113,4 +152,19 @@
113152
}
114153
objRef?.Dispose();
115154
}
155+
156+
private int ConvertToInteger(string strParamVersion)
157+
{
158+
int intVersionNumber = 0;
159+
var strSegments = strParamVersion.Split('.');
160+
int i = 0;
161+
List<int> colMultiplyers = new List<int> { 10000, 100, 1 };
162+
foreach (var strSegment in strSegments)
163+
{
164+
int intSegmentNumber = Convert.ToInt32(strSegment);
165+
intVersionNumber += intSegmentNumber * colMultiplyers[i];
166+
i++;
167+
}
168+
return intVersionNumber;
169+
}
116170
}

0 commit comments

Comments
 (0)