[extensions-web] js: Use extension status to display the "Out of Date" indicator on local/



commit 50c7d07c7e695ec4bbef21cd490d58ac9b368511
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Mon Jan 30 19:43:48 2012 -0500

    js: Use extension status to display the "Out of Date" indicator on local/
    
    On the local extensions page, don't grab an svm from the server -- we clearly
    have more accurate data about the system's local extension state from the
    Shell. The user may have an 'up-to-date' extension on his machine, but it
    may not be on EGO for whatever reason.

 sweettooth/static/js/extensions.js |   37 ++++++++++++++++++++++-------------
 1 files changed, 23 insertions(+), 14 deletions(-)
---
diff --git a/sweettooth/static/js/extensions.js b/sweettooth/static/js/extensions.js
index 3edf18f..6253e00 100644
--- a/sweettooth/static/js/extensions.js
+++ b/sweettooth/static/js/extensions.js
@@ -241,6 +241,9 @@ function($, messages, dbusProxy, extensionUtils) {
                         if (extension.hasPrefs && extension.state !== ExtensionState.OUT_OF_DATE)
                             $elem.addLaunchExtensionPrefsButton(true);
 
+                        if (extension.state === ExtensionState.OUT_OF_DATE)
+                            $elem.addOutOfDateIndicator(true);
+
                         $.ajax({
                             url: "/ajax/detail/",
                             dataType: "json",
@@ -258,9 +261,7 @@ function($, messages, dbusProxy, extensionUtils) {
                             if (result.pk !== undefined) {
                                 $elem.
                                     data('pk', result.pk).
-                                    data('svm', $.parseJSON(result.shell_version_map)).
-                                    append($('<button>', {'class': 'uninstall', 'title': "Uninstall"}).text("Uninstall").bind('click', uninstall)).
-                                    addOutOfDateIndicator();
+                                    append($('<button>', {'class': 'uninstall', 'title': "Uninstall"}).text("Uninstall").bind('click', uninstall));
                             }
 
                             addExtensionSwitch(uuid, extension, $elem);
@@ -340,18 +341,26 @@ function($, messages, dbusProxy, extensionUtils) {
         });
     };
 
-    $.fn.addOutOfDateIndicator = function() {
+    $.fn.addOutOfDateIndicator = function(force) {
+        function indicator($elem) {
+            $elem.
+                addClass('out-of-date').
+                attr('title', "This extension is incompatible with your version of GNOME").
+                tipsy({ gravity: 'c', fade: true });
+        }
+
         return this.each(function() {
-            var svm = $(this).data('svm');
-            if (!svm)
-                return;
+            var $elem = $(this);
+            if (force) {
+                indicator($elem);
+            } else {
+                var svm = $elem.data('svm');
+                if (!svm)
+                    return;
 
-            var vpk = extensionUtils.grabProperExtensionVersion(svm, dbusProxy.ShellVersion);
-            if (vpk === null) {
-                $(this).
-                    addClass('out-of-date').
-                    attr('title', "This extension is incompatible with your version of GNOME").
-                    tipsy({ gravity: 'c', fade: true });
+                var vpk = extensionUtils.grabProperExtensionVersion(svm, dbusProxy.ShellVersion);
+                if (vpk === null)
+                    indicator($elem);
             }
         });
     };



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