@page "/" @using Microsoft.Extensions.Caching.Memory @using System.Reflection @using ErsatzTV.Core.Interfaces.GitHub @inject IGitHubApiClient _gitHubApiClient @inject IMemoryCache _memoryCache Full changelog is available on GitHub @code { private string _releaseNotes; protected override async Task OnParametersSetAsync() { try { if (_memoryCache.TryGetValue("Index.ReleaseNotesHtml", out string releaseNotesHtml)) { _releaseNotes = releaseNotesHtml; } else { var assembly = Assembly.GetEntryAssembly(); if (assembly != null) { string version = assembly.GetCustomAttribute()?.InformationalVersion; if (version != null) { Either maybeNotes; if (version != "develop") { string gitHubVersion = version.Split("-").Head() + "-prealpha"; if (!gitHubVersion.StartsWith("v")) { gitHubVersion = $"v{gitHubVersion}"; } maybeNotes = await _gitHubApiClient.GetReleaseNotes(gitHubVersion); maybeNotes.IfRight(notes => _releaseNotes = notes); } else { maybeNotes = await _gitHubApiClient.GetLatestReleaseNotes(); maybeNotes.IfRight(notes => _releaseNotes = notes); } } } if (_releaseNotes != null) { _memoryCache.Set("Index.ReleaseNotesHtml", _releaseNotes); } } } catch (Exception) { // ignore } } }