You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by rb...@apache.org on 2011/08/15 17:48:39 UTC

svn commit: r1157893 - /shindig/trunk/features/src/main/javascript/features/container/container.js

Author: rbaxter85
Date: Mon Aug 15 15:48:39 2011
New Revision: 1157893

URL: http://svn.apache.org/viewvc?rev=1157893&view=rev
Log:
SHINDIG-1568
Committed For Dan Dumont
Makes the get preferences function async.

Modified:
    shindig/trunk/features/src/main/javascript/features/container/container.js

Modified: shindig/trunk/features/src/main/javascript/features/container/container.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container/container.js?rev=1157893&r1=1157892&r2=1157893&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/container.js (original)
+++ shindig/trunk/features/src/main/javascript/features/container/container.js Mon Aug 15 15:48:39 2011
@@ -193,30 +193,37 @@ osapi.container.Container.prototype.navi
 
   this.refreshService_();
 
+  var
+    self = this,
+    selfSite = site,
+    finishNavigate = function(preferences) {
+      renderParams[RenderParam.USER_PREFS] = preferences;
+
+      // TODO: Lifecycle, add ability for current gadget to cancel nav.
+      site.navigateTo(gadgetUrl, viewParams, renderParams, function(gadgetInfo) {
+        // TODO: Navigate to error screen on primary gadget load failure
+        // TODO: Should display error without doing a standard navigate.
+        // TODO: Bad if the error gadget fails to load.
+        if (gadgetInfo.error) {
+          gadgets.warn(['Failed to possibly schedule token refresh for gadget ',
+              gadgetUrl, '.'].join(''));
+        } else if (gadgetInfo[osapi.container.MetadataResponse.NEEDS_TOKEN_REFRESH]) {
+          self.scheduleRefreshTokens_();
+        }
+
+        self.applyLifecycleCallbacks_(osapi.container.CallbackType.ON_NAVIGATED,
+            selfSite);
+        callback(gadgetInfo);
+      });
+    };
+
   // Try to retrieve preferences for the gadget if no preferences were explicitly provided.
   if (this.config_[ContainerConfig.GET_PREFERENCES] && !renderParams[RenderParam.USER_PREFS]) {
-    renderParams[RenderParam.USER_PREFS] =
-      this.config_[ContainerConfig.GET_PREFERENCES](site.getId(), gadgetUrl);
+    this.config_[ContainerConfig.GET_PREFERENCES](site.getId(), gadgetUrl, finishNavigate);
+  }
+  else {
+    finishNavigate(renderParams[RenderParam.USER_PREFS]);
   }
-
-  var self = this;
-  var selfSite = site;
-  // TODO: Lifecycle, add ability for current gadget to cancel nav.
-  site.navigateTo(gadgetUrl, viewParams, renderParams, function(gadgetInfo) {
-    // TODO: Navigate to error screen on primary gadget load failure
-    // TODO: Should display error without doing a standard navigate.
-    // TODO: Bad if the error gadget fails to load.
-    if (gadgetInfo.error) {
-      gadgets.warn(['Failed to possibly schedule token refresh for gadget ',
-          gadgetUrl, '.'].join(''));
-    } else if (gadgetInfo[osapi.container.MetadataResponse.NEEDS_TOKEN_REFRESH]) {
-      self.scheduleRefreshTokens_();
-    }
-
-    self.applyLifecycleCallbacks_(osapi.container.CallbackType.ON_NAVIGATED,
-        selfSite);
-    callback(gadgetInfo);
-  });
 };