Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: add check if AvailableCommits contains anything #359

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 19 additions & 37 deletions StabilityMatrix.Avalonia/ViewModels/Dialogs/InstallerViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,7 @@ public partial class InstallerViewModel : ContentDialogViewModelBase

// Version types (release or commit)
[ObservableProperty]
[NotifyPropertyChangedFor(
nameof(ReleaseLabelText),
nameof(IsReleaseMode),
nameof(SelectedVersion)
)]
[NotifyPropertyChangedFor(nameof(ReleaseLabelText), nameof(IsReleaseMode), nameof(SelectedVersion))]
private PackageVersionType selectedVersionType = PackageVersionType.Commit;

[ObservableProperty]
Expand All @@ -106,22 +102,16 @@ public partial class InstallerViewModel : ContentDialogViewModelBase
[NotifyPropertyChangedFor(nameof(CanInstall))]
private bool isLoading;

public string ReleaseLabelText =>
IsReleaseMode ? Resources.Label_Version : Resources.Label_Branch;
public string ReleaseLabelText => IsReleaseMode ? Resources.Label_Version : Resources.Label_Branch;
public bool IsReleaseMode
{
get => SelectedVersionType == PackageVersionType.GithubRelease;
set =>
SelectedVersionType = value
? PackageVersionType.GithubRelease
: PackageVersionType.Commit;
set => SelectedVersionType = value ? PackageVersionType.GithubRelease : PackageVersionType.Commit;
}
public bool IsReleaseModeAvailable =>
AvailableVersionTypes.HasFlag(PackageVersionType.GithubRelease);
public bool IsReleaseModeAvailable => AvailableVersionTypes.HasFlag(PackageVersionType.GithubRelease);
public bool ShowTorchVersionOptions => SelectedTorchVersion != TorchVersion.None;

public bool CanInstall =>
!string.IsNullOrWhiteSpace(InstallName) && !ShowDuplicateWarning && !IsLoading;
public bool CanInstall => !string.IsNullOrWhiteSpace(InstallName) && !ShowDuplicateWarning && !IsLoading;

public IEnumerable<IPackageStep> Steps { get; set; }

Expand Down Expand Up @@ -254,10 +244,8 @@ private async Task ActuallyInstall()
if (IsReleaseMode)
{
downloadOptions.VersionTag =
SelectedVersion?.TagName
?? throw new NullReferenceException("Selected version is null");
downloadOptions.IsLatest =
AvailableVersions?.First().TagName == downloadOptions.VersionTag;
SelectedVersion?.TagName ?? throw new NullReferenceException("Selected version is null");
downloadOptions.IsLatest = AvailableVersions?.First().TagName == downloadOptions.VersionTag;
downloadOptions.IsPrerelease = SelectedVersion.IsPrerelease;

installedVersion.InstalledReleaseVersion = downloadOptions.VersionTag;
Expand All @@ -268,21 +256,15 @@ private async Task ActuallyInstall()
downloadOptions.CommitHash =
SelectedCommit?.Sha ?? throw new NullReferenceException("Selected commit is null");
downloadOptions.BranchName =
SelectedVersion?.TagName
?? throw new NullReferenceException("Selected version is null");
SelectedVersion?.TagName ?? throw new NullReferenceException("Selected version is null");
downloadOptions.IsLatest = AvailableCommits?.First().Sha == SelectedCommit.Sha;

installedVersion.InstalledBranch =
SelectedVersion?.TagName
?? throw new NullReferenceException("Selected version is null");
SelectedVersion?.TagName ?? throw new NullReferenceException("Selected version is null");
installedVersion.InstalledCommitSha = downloadOptions.CommitHash;
}

var downloadStep = new DownloadPackageVersionStep(
SelectedPackage,
installLocation,
downloadOptions
);
var downloadStep = new DownloadPackageVersionStep(SelectedPackage, installLocation, downloadOptions);
var installStep = new InstallPackageStep(
SelectedPackage,
SelectedTorchVersion,
Expand Down Expand Up @@ -351,9 +333,7 @@ private void UpdateSelectedVersionToLatestMain()
else
{
// First try to find the package-defined main branch
var version = AvailableVersions.FirstOrDefault(
x => x.TagName == SelectedPackage.MainBranch
);
var version = AvailableVersions.FirstOrDefault(x => x.TagName == SelectedPackage.MainBranch);
// If not found, try main
version ??= AvailableVersions.FirstOrDefault(x => x.TagName == "main");

Expand Down Expand Up @@ -406,8 +386,8 @@ partial void OnSelectedVersionTypeChanged(PackageVersionType value)
if (SelectedPackage is null || Design.IsDesignMode)
return;

Dispatcher.UIThread
.InvokeAsync(async () =>
Dispatcher
.UIThread.InvokeAsync(async () =>
{
logger.LogDebug($"Release mode: {IsReleaseMode}");
var versionOptions = await SelectedPackage.GetAllVersionOptions();
Expand All @@ -425,9 +405,7 @@ partial void OnSelectedVersionTypeChanged(PackageVersionType value)

if (!IsReleaseMode)
{
var commits = (
await SelectedPackage.GetAllCommits(SelectedVersion.TagName)
)?.ToList();
var commits = (await SelectedPackage.GetAllCommits(SelectedVersion.TagName))?.ToList();
if (commits is null || commits.Count == 0)
return;

Expand Down Expand Up @@ -495,7 +473,11 @@ partial void OnSelectedVersionChanged(PackageVersion? value)
Dispatcher.UIThread.Post(() =>
{
AvailableCommits = new ObservableCollection<GitCommit>(hashes);
SelectedCommit = AvailableCommits[0];

if (AvailableCommits.Count > 0)
{
SelectedCommit = AvailableCommits[0];
}
});
}
catch (Exception e)
Expand Down
Loading