From 0ceeb2e6c591d20ad0cbb3276e49d3862aa765cc Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Thu, 23 Oct 2014 13:34:33 -0700 Subject: [PATCH] Don't try to use `WebAppInternals.refreshableAssets` until it's ready. `refreshableAssets` gets set from the `generateBoilerplate` call in webapp's `main` function. `updateVersions` in autoupdate gets called in a startup hook, which runs before `main`. So we need to wait until webapp is "more ready" (i.e. `onListening`) to try to use `WebAppInternals.refreshableAssets`. --- packages/autoupdate/autoupdate_server.js | 49 +++++++++++++----------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/packages/autoupdate/autoupdate_server.js b/packages/autoupdate/autoupdate_server.js index 8b99ba00ad..182b31e8ac 100644 --- a/packages/autoupdate/autoupdate_server.js +++ b/packages/autoupdate/autoupdate_server.js @@ -108,30 +108,35 @@ var updateVersions = function (shouldReloadClientProgram) { }}); } - if (! ClientVersions.findOne({_id: "version-refreshable"})) { - ClientVersions.insert({ - _id: "version-refreshable", - version: Autoupdate.autoupdateVersionRefreshable, - assets: WebAppInternals.refreshableAssets - }); - } else { - ClientVersions.update("version-refreshable", { $set: { - version: Autoupdate.autoupdateVersionRefreshable, - assets: WebAppInternals.refreshableAssets + // Use `onListening` here because we need to use + // `WebAppInternals.refreshableAssets`, which is only set after + // `WebApp.generateBoilerplate` is called by `main` in webapp. + WebApp.onListening(function () { + if (! ClientVersions.findOne({_id: "version-refreshable"})) { + ClientVersions.insert({ + _id: "version-refreshable", + version: Autoupdate.autoupdateVersionRefreshable, + assets: WebAppInternals.refreshableAssets + }); + } else { + ClientVersions.update("version-refreshable", { $set: { + version: Autoupdate.autoupdateVersionRefreshable, + assets: WebAppInternals.refreshableAssets }}); - } + } - if (! ClientVersions.findOne({_id: "version-cordova"})) { - ClientVersions.insert({ - _id: "version-cordova", - version: Autoupdate.autoupdateVersionCordova, - refreshable: false - }); - } else { - ClientVersions.update("version-cordova", { $set: { - version: Autoupdate.autoupdateVersionCordova - }}); - } + if (! ClientVersions.findOne({_id: "version-cordova"})) { + ClientVersions.insert({ + _id: "version-cordova", + version: Autoupdate.autoupdateVersionCordova, + refreshable: false + }); + } else { + ClientVersions.update("version-cordova", { $set: { + version: Autoupdate.autoupdateVersionCordova + }}); + } + }); }; Meteor.publish(