diff --git a/platform/core/src/models/ModelAggregator.js b/platform/core/src/models/ModelAggregator.js index 933674f83a..c2d331fd55 100644 --- a/platform/core/src/models/ModelAggregator.js +++ b/platform/core/src/models/ModelAggregator.js @@ -18,6 +18,19 @@ define( */ function ModelAggregator($q, providers) { + // Pick a domain object model to use, favoring the one + // with the most recent timestamp + function pick(a, b) { + if (!a) { + return b; + } + if (!b) { + return b; + } + return (a.modified || Number.NEGATIVE_INFINITY) > + (b.modified || Number.NEGATIVE_INFINITY) ? a : b; + } + // Merge results from multiple providers into one // large result object. function mergeModels(provided, ids) { @@ -25,7 +38,7 @@ define( ids.forEach(function (id) { provided.forEach(function (models) { if (models[id]) { - result[id] = models[id]; + result[id] = pick(result[id], models[id]); } }); });