|
1 | 1 | @using RFPResponseAPP.Client.Services |
2 | 2 | @using RFPResponseAPP.Model |
3 | 3 | @using RFPResponseAPP.Models |
| 4 | +@using System.Collections.Generic |
4 | 5 | @rendermode @(new InteractiveWebAssemblyRenderMode(prerender: false)) |
5 | 6 | @inherits LayoutComponentBase |
6 | 7 | @implements IAsyncDisposable |
|
11 | 12 | @inject SettingsService SettingsService |
12 | 13 | @inject LogService _LogService |
13 | 14 | @inject AppMetadata _AppMetadata |
| 15 | +@inject HttpClient Http |
14 | 16 | <RadzenDialog /> |
15 | 17 | <RadzenNotification /> |
16 | 18 | <RadzenTooltip /> |
|
21 | 23 | <img src="images\\RFPResponseCreatorLogo_small.png" alt="RFP Response Creator Logo" class="logo me-3" style="height:40px; width: auto;" /> |
22 | 24 | </div> |
23 | 25 | <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 | + } |
25 | 34 | <RadzenButton Click="@(async () => await SaveSettingsaaAndCloseBrowserTab())" Disabled="@isSaving" Size="ButtonSize.ExtraSmall"> |
26 | 35 | @if (isSaving) |
27 | 36 | { |
|
60 | 69 | ZipService objZipService = new ZipService(); |
61 | 70 | private IJSObjectReference _browserModule; |
62 | 71 | 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}¶mCurrentVersion={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 | + } |
63 | 102 |
|
64 | 103 | protected override async Task OnAfterRenderAsync(bool firstRender) |
65 | 104 | { |
|
113 | 152 | } |
114 | 153 | objRef?.Dispose(); |
115 | 154 | } |
| 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 | + } |
116 | 170 | } |
0 commit comments