Parcourir la source

Ava UI: Handle updates containing non numeric characters (#7043)

* Handle updates containing non numeric characters

Smh

Dont be stupid

* Use Berry’s method

* Thanks gdk

* Remove using
Isaac Marovitz il y a 1 an
Parent
commit
6ce49a2dc7

+ 8 - 9
src/Ryujinx/UI/Models/TitleUpdateModel.cs

@@ -1,21 +1,20 @@
-using LibHac.Ns;
 using Ryujinx.Ava.Common.Locale;
 
 namespace Ryujinx.Ava.UI.Models
 {
     public class TitleUpdateModel
     {
-        public ApplicationControlProperty Control { get; }
+        public uint Version { get; }
         public string Path { get; }
+        public string Label { get; }
 
-        public string Label => LocaleManager.Instance.UpdateAndGetDynamicValue(
-            System.IO.Path.GetExtension(Path)?.ToLower() == ".xci" ? LocaleKeys.TitleBundledUpdateVersionLabel : LocaleKeys.TitleUpdateVersionLabel,
-            Control.DisplayVersionString.ToString()
-        );
-
-        public TitleUpdateModel(ApplicationControlProperty control, string path)
+        public TitleUpdateModel(uint version, string displayVersion, string path)
         {
-            Control = control;
+            Version = version;
+            Label = LocaleManager.Instance.UpdateAndGetDynamicValue(
+                System.IO.Path.GetExtension(path)?.ToLower() == ".xci" ? LocaleKeys.TitleBundledUpdateVersionLabel : LocaleKeys.TitleUpdateVersionLabel,
+                displayVersion
+            );
             Path = path;
         }
     }

+ 5 - 18
src/Ryujinx/UI/ViewModels/TitleUpdateViewModel.cs

@@ -131,26 +131,11 @@ namespace Ryujinx.Ava.UI.ViewModels
 
         public void SortUpdates()
         {
-            var list = TitleUpdates.ToList();
-
-            list.Sort((first, second) =>
-            {
-                if (string.IsNullOrEmpty(first.Control.DisplayVersionString.ToString()))
-                {
-                    return -1;
-                }
-
-                if (string.IsNullOrEmpty(second.Control.DisplayVersionString.ToString()))
-                {
-                    return 1;
-                }
-
-                return Version.Parse(first.Control.DisplayVersionString.ToString()).CompareTo(Version.Parse(second.Control.DisplayVersionString.ToString())) * -1;
-            });
+            var sortedUpdates = TitleUpdates.OrderByDescending(update => update.Version);
 
             Views.Clear();
             Views.Add(new BaseModel());
-            Views.AddRange(list);
+            Views.AddRange(sortedUpdates);
 
             if (SelectedUpdate == null)
             {
@@ -204,7 +189,9 @@ namespace Ryujinx.Ava.UI.ViewModels
                     controlNca.OpenFileSystem(NcaSectionType.Data, IntegrityCheckLevel.None).OpenFile(ref nacpFile.Ref, "/control.nacp".ToU8Span(), OpenMode.Read).ThrowIfFailure();
                     nacpFile.Get.Read(out _, 0, SpanHelpers.AsByteSpan(ref controlData), ReadOption.None).ThrowIfFailure();
 
-                    var update = new TitleUpdateModel(controlData, path);
+                    var displayVersion = controlData.DisplayVersionString.ToString();
+                    var update = new TitleUpdateModel(content.Version.Version, displayVersion, path);
+
                     TitleUpdates.Add(update);
 
                     if (selected)