From bec3c8c9dd8051dc422b0d00137c90ad78588675 Mon Sep 17 00:00:00 2001
From: michael-hoedl <michaelhoedl28@gmail.com>
Date: Mon, 25 Dec 2023 21:35:58 +0100
Subject: [PATCH] fix: add check if AvailableCommits contains anything

---
 .../ViewModels/Dialogs/InstallerViewModel.cs  | 56 +++++++------------
 1 file changed, 19 insertions(+), 37 deletions(-)

diff --git a/StabilityMatrix.Avalonia/ViewModels/Dialogs/InstallerViewModel.cs b/StabilityMatrix.Avalonia/ViewModels/Dialogs/InstallerViewModel.cs
index c98d41bf7..bfb8c6953 100644
--- a/StabilityMatrix.Avalonia/ViewModels/Dialogs/InstallerViewModel.cs
+++ b/StabilityMatrix.Avalonia/ViewModels/Dialogs/InstallerViewModel.cs
@@ -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]
@@ -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; }
 
@@ -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;
@@ -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,
@@ -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");
 
@@ -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();
@@ -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;
 
@@ -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)