From a880ac6e9f0d1ca44e81ccc5fc0c99fa8511e9de Mon Sep 17 00:00:00 2001 From: psychobunny Date: Tue, 5 Aug 2014 17:16:18 -0400 Subject: [PATCH] do one api call for template configs rather than two on cold load --- public/src/ajaxify.js | 6 +++--- src/routes/api.js | 19 ++++++++++++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index fb02bd675c..1e772957e7 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -329,9 +329,9 @@ var ajaxify = ajaxify || {}; templates.registerLoader(ajaxify.loadTemplate); - $.when($.getJSON(RELATIVE_PATH + '/templates/config.json'), $.getJSON(RELATIVE_PATH + '/api/get_templates_listing')).done(function (config_data, templates_data) { - templatesConfig = config_data[0]; - availableTemplates = templates_data[0]; + $.getJSON(RELATIVE_PATH + '/api/get_templates_listing', function (data) { + templatesConfig = data.templatesConfig; + availableTemplates = data.availableTemplates; app.load(); }); diff --git a/src/routes/api.js b/src/routes/api.js index 56cf9a4592..e080df9277 100644 --- a/src/routes/api.js +++ b/src/routes/api.js @@ -135,10 +135,10 @@ function getModerators(req, res, next) { }); } -var templatesListingCache = []; +var templatesListingCache = {}; function getTemplatesListing(req, res, next) { - if (templatesListingCache.length) { + if (templatesListingCache.availableTemplates && templatesListingCache.templatesConfig) { return res.json(templatesListingCache); } @@ -148,11 +148,15 @@ function getTemplatesListing(req, res, next) { }, extended: function(next) { plugins.fireHook('filter:templates.get_virtual', [], next); - } + }, + config: function(next) { + fs.readFile(path.join(nconf.get('views_dir'), 'config.json'), next); + }, }, function(err, results) { if (err) { return next(err); } + var data = []; data = results.views.filter(function(value, index, self) { return self.indexOf(value) === index; @@ -161,8 +165,13 @@ function getTemplatesListing(req, res, next) { }); data = data.concat(results.extended); - templatesListingCache = data; - res.json(data); + + templatesListingCache = { + availableTemplates: data, + templatesConfig: results.config + }; + + res.json(templatesListingCache); }); }