[extensions-web/bugfix/v40-frontend-versionscheme: 2/2] js: extensionUtils: added support for GNOME 40+ version scheme.




commit 1fef0e79638e8f2f7bf038fec129712c7fef80f0
Author: Yuri Konotopov <ykonotopov gnome org>
Date:   Sat Feb 27 11:57:56 2021 +0400

    js: extensionUtils: added support for GNOME 40+ version scheme.
    
    Fixes: https://gitlab.gnome.org/Infrastructure/extensions-web/-/issues/129

 sweettooth/static/js/extensionUtils.js | 66 +++++++++++++++-------------------
 1 file changed, 28 insertions(+), 38 deletions(-)
---
diff --git a/sweettooth/static/js/extensionUtils.js b/sweettooth/static/js/extensionUtils.js
index c20b4bfc..4ded0a71 100644
--- a/sweettooth/static/js/extensionUtils.js
+++ b/sweettooth/static/js/extensionUtils.js
@@ -37,8 +37,18 @@ define([], function () {
                PER_USER: 2
        };
 
+       let prerelease_versions = {
+               'alpha': -3,
+               'beta': -2,
+               'rc': -1,
+       };
+
        function versionCompare(a, b) {
                function toInt(value) {
+                       if(value in Object.keys(prerelease_versions)) {
+                               return prerelease_versions[value];
+                       }
+
                        return parseInt(value);
                }
 
@@ -92,58 +102,38 @@ define([], function () {
                        }
                }
 
-
                if (!map || !current)
                {
                        return null;
                }
 
-               // Only care about the first three parts -- look up
-               // "3.2.2" when given "3.2.2.1"
-
                var parts = current.split('.');
-
-               var versionA = map[(parts[0] + '.' + parts[1] + '.' + parts[2])];
-
-               // Unstable releases
-               if (parseInt(parts[1]) % 2 != 0)
-               {
-                       if (versionA !== undefined)
-                       {
-                               return versionA;
-                       }
-                       else if(findBestVersion)
-                       {
-                               return map[getBestShellVersion()];
-                       }
-                       else
-                       {
-                               return null;
-                       }
-               }
-
-               var versionB = map[(parts[0] + '.' + parts[1])];
-
-               if (versionA !== undefined && versionB !== undefined)
+               // Don't use destruction assigment for now
+               // We need new Vue frontend with babel....
+               let major = parts[0];
+               let minor = parts[1];
+               let point = parts[2];
+
+               let mappedVersion = null;
+               if (major >= 40 || (major < 40 && minor % 2))
                {
-                       return (versionA.version > versionB.version) ? versionA : versionB;
+                       mappedVersion = map[`${major}.${minor}`]
                }
-               else if (versionA !== undefined)
+               else
                {
-                       return versionA;
+                       mappedVersion = map[`${major}.${minor}.${point}`]
                }
-               else if (versionB !== undefined)
-               {
-                       return versionB;
+
+               if(mappedVersion) {
+                       return mappedVersion;
                }
-               else if(findBestVersion)
+
+               if(findBestVersion)
                {
                        return map[getBestShellVersion()];
                }
-               else
-               {
-                       return null;
-               }
+
+               return null;
        };
 
        exports.findNextHighestVersion = function (map, current) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]