From 99fa66c02691dea9517d7b26ae0ae5edc10869b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Tue, 31 Oct 2017 18:02:23 +0100 Subject: [PATCH] Extract hash template for layergroup id and dataviews/widgets to a middlewares --- lib/cartodb/controllers/map.js | 45 ++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index de0561cf..41575629 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -197,7 +197,6 @@ MapController.prototype.create = function(req, res, prepareConfigFn, next) { const { layergroup, analysesResults = [] } = res.locals; - self.addDataviewsAndWidgetsUrls(res.locals.user, layergroup, mapConfig.obj()); self.addAnalysesMetadata(res.locals.user, layergroup, analysesResults, true); addContextMetadata(layergroup, mapConfig.obj(), context); res.set('X-Layergroup-Id', layergroup.layergroupid); @@ -285,8 +284,11 @@ MapController.prototype.instantiateTemplate = function(req, res, prepareParamsFn res.locals.mapconfig = mapConfig; res.locals.analysesResults = mapConfigProvider.analysesResults; res.locals.layergroup = layergroup; + res.locals.template = mapConfigProvider.template; - const afterLayergroupCreate = self.afterLayergroupCreateBuilder(); + const afterLayergroupCreate = self.afterLayergroupCreateBuilder({ + useTemplateHash: true + }); afterLayergroupCreate(req, res, this); }, @@ -298,10 +300,6 @@ MapController.prototype.instantiateTemplate = function(req, res, prepareParamsFn const { layergroup, analysesResults = [] } = res.locals; - var templateHash = self.templateMaps.fingerPrint(mapConfigProvider.template).substring(0, 8); - layergroup.layergroupid = cdbuser + '@' + templateHash + '@' + layergroup.layergroupid; - - self.addDataviewsAndWidgetsUrls(cdbuser, layergroup, mapConfig.obj()); self.addAnalysesMetadata(cdbuser, layergroup, analysesResults); addContextMetadata(layergroup, mapConfig.obj(), mapConfigProvider.context); @@ -319,8 +317,9 @@ MapController.prototype.instantiateTemplate = function(req, res, prepareParamsFn ); }; -MapController.prototype.afterLayergroupCreateBuilder = function () { - var self = this; +MapController.prototype.afterLayergroupCreateBuilder = function (options = {}) { + const self = this; + const { useTemplateHash = false } = options; return function (req, res, callback) { step( @@ -351,6 +350,19 @@ MapController.prototype.afterLayergroupCreateBuilder = function () { assert.ifError(err); self.setLayerStats(req, res, this); }, + function augmentLayergroupIdWithTemplateHash (err) { + assert.ifError(err); + + if (!useTemplateHash) { + return null; + } + + self.augmentLayergroupIdWithTemplateHash(req, res, this); + }, + function (err) { + assert.ifError(err); + self.setDataviewsAndWidgetsUrlsToLayergroupMetadata(req, res, this); + }, function finish(err) { callback(err); } @@ -483,6 +495,23 @@ MapController.prototype.setLayerStats = function (req, res, callback) { }); }; +MapController.prototype.augmentLayergroupIdWithTemplateHash = function (req, res, callback) { + const { layergroup, user, template } = res.locals; + + var templateHash = this.templateMaps.fingerPrint(template).substring(0, 8); + layergroup.layergroupid = `${user}@${templateHash}@${layergroup.layergroupid}`; + + callback(); +}; + +MapController.prototype.setDataviewsAndWidgetsUrlsToLayergroupMetadata = function (req, res, callback) { + const { layergroup, user, mapconfig } = res.locals; + + this.addDataviewsAndWidgetsUrls(user, layergroup, mapconfig.obj()); + + callback(); +} + function getLastUpdatedTime(analysesResults, lastUpdateTime) { if (!Array.isArray(analysesResults)) { return lastUpdateTime;