Selaa lähdekoodia

Update checker null checks

Krzysztof Krysiński 2 vuotta sitten
vanhempi
commit
e7f0ed0777

+ 6 - 1
src/PixiEditor.UpdateModule/UpdateChecker.cs

@@ -81,12 +81,15 @@ public class UpdateChecker
 
 
     public bool CheckUpdateAvailable(ReleaseInfo latestRelease)
     public bool CheckUpdateAvailable(ReleaseInfo latestRelease)
     {
     {
+        if (latestRelease == null || string.IsNullOrEmpty(latestRelease.TagName)) return false;
+        if (CurrentVersionTag == null) return false;
+        
         return latestRelease.WasDataFetchSuccessful && VersionDifferent(CurrentVersionTag, latestRelease.TagName);
         return latestRelease.WasDataFetchSuccessful && VersionDifferent(CurrentVersionTag, latestRelease.TagName);
     }
     }
 
 
     public bool IsUpdateCompatible(string[] incompatibleVersions)
     public bool IsUpdateCompatible(string[] incompatibleVersions)
     {
     {
-        return !incompatibleVersions.Select(x => x.Trim()).Contains(CurrentVersionTag[..7].Trim());
+        return !incompatibleVersions.Select(x => x.Trim()).Contains(ExtractVersionString(CurrentVersionTag));
     }
     }
 
 
     public async Task<bool> IsUpdateCompatible()
     public async Task<bool> IsUpdateCompatible()
@@ -130,6 +133,8 @@ public class UpdateChecker
 
 
     private static string ExtractVersionString(string versionString)
     private static string ExtractVersionString(string versionString)
     {
     {
+        if (string.IsNullOrEmpty(versionString)) return string.Empty;
+        
         for (int i = 0; i < versionString.Length; i++)
         for (int i = 0; i < versionString.Length; i++)
         {
         {
             if (!char.IsDigit(versionString[i]) && versionString[i] != '.')
             if (!char.IsDigit(versionString[i]) && versionString[i] != '.')

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Main/UpdateViewModel.cs

@@ -100,7 +100,7 @@ internal class UpdateViewModel : SubViewModel<ViewModelMain>
                 string dir = AppDomain.CurrentDomain.BaseDirectory;
                 string dir = AppDomain.CurrentDomain.BaseDirectory;
                 
                 
                 UpdateDownloader.CreateTempDirectory();
                 UpdateDownloader.CreateTempDirectory();
-                if(UpdateChecker.LatestReleaseInfo == null) return;
+                if(UpdateChecker.LatestReleaseInfo == null || string.IsNullOrEmpty(UpdateChecker.LatestReleaseInfo.TagName)) return;
                 bool updateFileExists = File.Exists(
                 bool updateFileExists = File.Exists(
                     Path.Join(UpdateDownloader.DownloadLocation, $"update-{UpdateChecker.LatestReleaseInfo.TagName}.zip"));
                     Path.Join(UpdateDownloader.DownloadLocation, $"update-{UpdateChecker.LatestReleaseInfo.TagName}.zip"));
                 string exePath = Path.Join(UpdateDownloader.DownloadLocation,
                 string exePath = Path.Join(UpdateDownloader.DownloadLocation,