112 lines
3.8 KiB
Text
112 lines
3.8 KiB
Text
@page "/Settings/Updates"
|
|
@using Markdig
|
|
@using Octokit
|
|
@using Semver
|
|
@inject IMessageService MessageService
|
|
@inject UpdateService UpdateService
|
|
@inject ILogger<Updates> Logger
|
|
@attribute [Authorize(Roles = RoleService.AdministratorRoleName)]
|
|
|
|
<PageHeader Title="Updates">
|
|
<PageHeaderExtra>
|
|
<Button Type="@ButtonType.Primary" OnClick="Update" Disabled="@(!UpdateAvailable || Updating)" Loading="Updating">Update</Button>
|
|
</PageHeaderExtra>
|
|
</PageHeader>
|
|
|
|
<div style="padding: 0 24px;">
|
|
@if (!Loading && !UpdateAvailable)
|
|
{
|
|
<Alert Type="@AlertType.Success" Message="You are on the latest version!" ShowIcon="true" />
|
|
}
|
|
else if (!Loading && UpdateAvailable)
|
|
{
|
|
<Alert Type="@AlertType.Info" Message="A newer version of LANCommander is available" ShowIcon="true" />
|
|
}
|
|
else
|
|
{
|
|
<Alert Type="@AlertType.Warning" Message="Loading release information..." ShowIcon="true" />
|
|
}
|
|
|
|
<Space Direction="DirectionVHType.Vertical" Style="width: 100%;">
|
|
@if (Releases != null && Releases.Count() > 0)
|
|
{
|
|
foreach (var release in Releases)
|
|
{
|
|
<SpaceItem>
|
|
<Card Title="@release.Name">
|
|
<TitleTemplate>
|
|
@release.Name <span style="font-size: 70%; margin-right: 6px;">@release.PublishedAt.GetValueOrDefault().ToString("MMMM d yyyy")</span>
|
|
|
|
@if (Releases.First().Equals(release))
|
|
{
|
|
<Tag Color="@PresetColor.Gold.ToString()">Latest</Tag>
|
|
}
|
|
|
|
@if (release.TagName == $"v{CurrentVersion.ToString()}")
|
|
{
|
|
<Tag Color="@PresetColor.Blue.ToString()">Current</Tag>
|
|
}
|
|
</TitleTemplate>
|
|
<Extra>
|
|
<a href="@release.HtmlUrl" target="_blank">View Release</a>
|
|
</Extra>
|
|
<Body>
|
|
@((MarkupString)Markdown.ToHtml(release.Body))
|
|
</Body>
|
|
</Card>
|
|
</SpaceItem>
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (var i = 0; i < 5; i++)
|
|
{
|
|
<Card Loading="true" Style="width: 100%;"></Card>
|
|
}
|
|
}
|
|
</Space>
|
|
</div>
|
|
|
|
@code {
|
|
Settings Settings = SettingService.GetSettings();
|
|
|
|
string RootPath = Path.GetPathRoot(Directory.GetCurrentDirectory());
|
|
|
|
bool Loading { get; set; } = true;
|
|
bool Updating { get; set; } = false;
|
|
bool UpdateAvailable { get; set; } = false;
|
|
SemVersion LatestVersion { get; set; }
|
|
SemVersion CurrentVersion { get; set; }
|
|
IEnumerable<Release> Releases { get; set; } = new List<Release>();
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
CurrentVersion = UpdateService.GetCurrentVersion();
|
|
UpdateAvailable = await UpdateService.UpdateAvailableAsync();
|
|
LatestVersion = await UpdateService.GetLatestVersionAsync();
|
|
Releases = await UpdateService.GetReleasesAsync(5);
|
|
|
|
Loading = false;
|
|
}
|
|
|
|
async Task Update()
|
|
{
|
|
try {
|
|
Updating = true;
|
|
|
|
if (Settings.Launcher.HostUpdates)
|
|
await UpdateService.DownloadLauncherReleaseAsync(Releases.First());
|
|
|
|
await UpdateService.DownloadServerReleaseAsync(Releases.First());
|
|
}
|
|
catch (NotImplementedException ex) {
|
|
MessageService.Error(ex.Message);
|
|
Logger.LogError(ex, "An unknown error occurred.");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageService.Error("An unknown error occurred while updating. Please check the logs");
|
|
Logger.LogError(ex, "An unknown error occurred.");
|
|
}
|
|
}
|
|
}
|