Skip to content

Commit

Permalink
Fix #1382
Browse files Browse the repository at this point in the history
  • Loading branch information
BartoszCichecki committed Aug 7, 2024
1 parent 0a4f4d7 commit f86e30b
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 5 deletions.
7 changes: 7 additions & 0 deletions LenovoLegionToolkit.Lib/Enums.cs
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,13 @@ 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
Expand Up @@ -62,7 +62,9 @@ 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() == "EXE") ?? filesNode.FirstOrDefault();
var mainFileNode = filesNode.FirstOrDefault(n => n!["TypeString"]!.ToString().ToLowerInvariant() == "exe")
?? filesNode.FirstOrDefault(n => n!["TypeString"]!.ToString().ToLowerInvariant() == "zip")
?? filesNode.FirstOrDefault();

if (mainFileNode is null)
return null;
Expand All @@ -74,14 +76,25 @@ public override async Task<List<Package>> GetPackagesAsync(string machineType, O
var releaseDateUnix = long.Parse(mainFileNode["Date"]!["Unix"]!.ToString());
var releaseDate = DateTimeOffset.FromUnixTimeMilliseconds(releaseDateUnix).DateTime;

var readmeType = ReadmeType.Unknown;
string? readme = null;
var readmeFileNode = downloadNode["Files"]!.AsArray().FirstOrDefault(n => n!["TypeString"]!.ToString() == "TXT README");

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();
}

return new()
{
Id = id,
Expand All @@ -93,6 +106,7 @@ public override async Task<List<Package>> GetPackagesAsync(string machineType, O
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 @@ -136,6 +136,7 @@ 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: 1 addition & 0 deletions LenovoLegionToolkit.Lib/Structs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,7 @@ 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
19 changes: 16 additions & 3 deletions LenovoLegionToolkit.WPF/Controls/Packages/PackageControl.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using LenovoLegionToolkit.Lib;
using LenovoLegionToolkit.Lib.PackageDownloader;
using LenovoLegionToolkit.Lib.Utils;
using LenovoLegionToolkit.WPF.Extensions;
using LenovoLegionToolkit.WPF.Resources;
using LenovoLegionToolkit.WPF.Utils;
using LenovoLegionToolkit.WPF.Windows.Packages;
Expand Down Expand Up @@ -41,7 +42,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 = string.IsNullOrWhiteSpace(package.Readme) ? Visibility.Collapsed : Visibility.Visible;
_readmeButton.Visibility = package.ReadmeType is ReadmeType.Unknown ? 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 @@ -94,8 +95,20 @@ private void ReadmeButton_Click(object sender, RoutedEventArgs e)
if (_package.Readme is null)
return;

var window = new ReadmeWindow(_package.Readme) { Owner = Window.GetWindow(this) };
window.ShowDialog();
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));
}
}

private async void DownloadButton_Click(object sender, RoutedEventArgs e)
Expand Down

0 comments on commit f86e30b

Please sign in to comment.