Skip to content

Commit

Permalink
Fix #1411
Browse files Browse the repository at this point in the history
  • Loading branch information
BartoszCichecki committed Aug 28, 2024
1 parent b8bd644 commit bf56eeb
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 169 deletions.
7 changes: 0 additions & 7 deletions LenovoLegionToolkit.Lib/Enums.cs
Original file line number Diff line number Diff line change
Expand Up @@ -383,13 +383,6 @@ public enum ProcessEventInfoType
Stopped
}

public enum ReadmeType
{
Unknown,
Text,
Html,
}

public enum RebootType
{
NotRequired = 0,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text.Json.Nodes;
using System.Threading;
using System.Threading.Tasks;
Expand Down Expand Up @@ -43,7 +42,7 @@ public override async Task<List<Package>> GetPackagesAsync(string machineType, O
if (!IsCompatible(downloadNode, osString))
continue;

var package = await ParsePackageAsync(httpClient, downloadNode!, token).ConfigureAwait(false);
var package = ParsePackage(downloadNode!);
if (package is null)
continue;

Expand All @@ -53,7 +52,7 @@ public override async Task<List<Package>> GetPackagesAsync(string machineType, O
return packages;
}

private static async Task<Package?> ParsePackageAsync(HttpClient httpClient, JsonNode downloadNode, CancellationToken token)
private static Package? ParsePackage(JsonNode downloadNode)
{
var id = downloadNode["ID"]!.ToJsonString();
var category = downloadNode["Category"]!["Name"]!.ToString();
Expand All @@ -62,51 +61,36 @@ public override async Task<List<Package>> GetPackagesAsync(string machineType, O
var version = downloadNode["SummaryInfo"]!["Version"]!.ToString();

var filesNode = downloadNode["Files"]!.AsArray();
var mainFileNode = filesNode.FirstOrDefault(n => n!["TypeString"]!.ToString().ToLowerInvariant() == "exe")
?? filesNode.FirstOrDefault(n => n!["TypeString"]!.ToString().ToLowerInvariant() == "zip")
var mainFileNode = filesNode.FirstOrDefault(n => n!["TypeString"]!.ToString().Equals("exe", StringComparison.InvariantCultureIgnoreCase))
?? filesNode.FirstOrDefault(n => n!["TypeString"]!.ToString().Equals("zip", StringComparison.InvariantCultureIgnoreCase))
?? filesNode.FirstOrDefault();

if (mainFileNode is null)
return null;

var fileLocation = mainFileNode["URL"]!.ToString();
var fileName = new Uri(fileLocation).Segments.LastOrDefault("file");// fileLocation[(fileLocation.LastIndexOf('/') + 1)..];
var fileName = new Uri(fileLocation).Segments.LastOrDefault("file");
var fileSize = mainFileNode["Size"]!.ToString();
var fileCrc = mainFileNode["SHA256"]?.ToString();
var releaseDateUnix = long.Parse(mainFileNode["Date"]!["Unix"]!.ToString());
var releaseDate = DateTimeOffset.FromUnixTimeMilliseconds(releaseDateUnix).DateTime;

var readmeType = ReadmeType.Unknown;
string? readme = null;
var readmeFileNode = filesNode.FirstOrDefault(n => n!["TypeString"]!.ToString().Equals("txt readme", StringComparison.InvariantCultureIgnoreCase))
?? filesNode.FirstOrDefault(n => n!["TypeString"]!.ToString().Equals("html", StringComparison.InvariantCultureIgnoreCase));

var readmeFileNode = filesNode.FirstOrDefault(n => n!["TypeString"]!.ToString().ToLowerInvariant() == "txt readme");
if (readmeFileNode is not null)
{
var readmeLocation = readmeFileNode["URL"]!.ToString();

readmeType = ReadmeType.Text;
readme = await GetReadmeAsync(httpClient, readmeLocation, token).ConfigureAwait(false);
}

readmeFileNode = filesNode.FirstOrDefault(n => n!["TypeString"]!.ToString().ToLowerInvariant() == "html");
if (readmeFileNode is not null)
{
readmeType = ReadmeType.Html;
readme = readmeFileNode["URL"]!.ToString();
}
var readme = readmeFileNode?["URL"]?.ToString();

return new()
{
Id = id,
Title = title,
Description = (title == description) ? string.Empty : description,
Description = title == description ? string.Empty : description,
Version = version,
Category = category,
FileName = fileName,
FileSize = fileSize,
FileCrc = fileCrc,
ReleaseDate = releaseDate,
ReadmeType = readmeType,
Readme = readme,
FileLocation = fileLocation,
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ private static async Task<Package> GetPackage(HttpClient httpClient, VantagePack
var releaseDateString = document.SelectSingleNode("/Package/ReleaseDate")!.InnerText;
var releaseDate = DateTime.Parse(releaseDateString);
var readmeName = document.SelectSingleNode("/Package/Files/Readme/File/Name")?.InnerText;
var readme = await GetReadmeAsync(httpClient, $"{baseLocation}/{readmeName}", token).ConfigureAwait(false);
var readme = $"{baseLocation}/{readmeName}";
var fileLocation = $"{baseLocation}/{fileName}";
var rebootString = document.SelectSingleNode("/Package/Reboot/@type")!.InnerText;
var reboot = int.TryParse(rebootString, out var rebootInt) ? (RebootType)rebootInt : RebootType.NotRequired;
Expand Down Expand Up @@ -136,7 +136,6 @@ private static async Task<Package> GetPackage(HttpClient httpClient, VantagePack
FileSize = fileSize,
FileCrc = fileCrc,
ReleaseDate = releaseDate,
ReadmeType = ReadmeType.Text,
Readme = readme,
FileLocation = fileLocation,
IsUpdate = isUpdate,
Expand Down
1 change: 0 additions & 1 deletion LenovoLegionToolkit.Lib/Structs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,6 @@ public struct Package
public string FileSize { get; init; }
public string? FileCrc { get; init; }
public DateTime ReleaseDate { get; init; }
public ReadmeType ReadmeType { get; init; }
public string? Readme { get; init; }
public string FileLocation { get; init; }
public bool IsUpdate { get; init; }
Expand Down
18 changes: 2 additions & 16 deletions LenovoLegionToolkit.WPF/Controls/Packages/PackageControl.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
using LenovoLegionToolkit.WPF.Extensions;
using LenovoLegionToolkit.WPF.Resources;
using LenovoLegionToolkit.WPF.Utils;
using LenovoLegionToolkit.WPF.Windows.Packages;

namespace LenovoLegionToolkit.WPF.Controls.Packages;

Expand Down Expand Up @@ -42,7 +41,7 @@ public PackageControl(IPackageDownloader packageDownloader, Package package, Fun
_categoryTextBlock.Text = package.Category;
_detailTextBlock.Text = $"{Resource.PackageControl_Version} {package.Version} | {package.FileSize} | {package.FileName}";

_readmeButton.Visibility = package.ReadmeType is ReadmeType.Unknown ? Visibility.Collapsed : Visibility.Visible;
_readmeButton.Visibility = package.Readme is null ? Visibility.Collapsed : Visibility.Visible;
_updateRebootStackPanel.Visibility = _isUpdateStackPanel.Visibility = package.IsUpdate ? Visibility.Visible : Visibility.Collapsed;

_rebootStackPanel.Visibility = package is { IsUpdate: true, Reboot: RebootType.Delayed or RebootType.Requested or RebootType.Forced or RebootType.ForcedPowerOff }
Expand Down Expand Up @@ -95,20 +94,7 @@ private void ReadmeButton_Click(object sender, RoutedEventArgs e)
if (_package.Readme is null)
return;

switch (_package.ReadmeType)
{
case ReadmeType.Text:
var window = new ReadmeWindow(_package.Readme) { Owner = Window.GetWindow(this) };
window.ShowDialog();
break;
case ReadmeType.Html:
new Uri(_package.Readme).Open();
break;
case ReadmeType.Unknown:
break;
default:
throw new ArgumentOutOfRangeException(nameof(_package.ReadmeType));
}
new Uri(_package.Readme).Open();
}

private async void DownloadButton_Click(object sender, RoutedEventArgs e)
Expand Down
88 changes: 0 additions & 88 deletions LenovoLegionToolkit.WPF/Windows/Packages/ReadmeWindow.xaml

This file was deleted.

30 changes: 0 additions & 30 deletions LenovoLegionToolkit.WPF/Windows/Packages/ReadmeWindow.xaml.cs

This file was deleted.

0 comments on commit bf56eeb

Please sign in to comment.