From 9d60b26cfa96e48686d5db9f646440559750c74f Mon Sep 17 00:00:00 2001 From: Jonathan Cremin Date: Tue, 6 Jan 2015 23:31:12 +0000 Subject: [PATCH] Match from url parameters on share page --- routes/share.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/routes/share.js b/routes/share.js index c2e6ae3..c2e6bf9 100644 --- a/routes/share.js +++ b/routes/share.js @@ -28,6 +28,33 @@ module.exports = function(req, res, next) { } return req.db.matches.findOne({_id:serviceId + "$$" + itemId}).then(function(doc) { + if (!doc) { + return matchedService.lookupId(itemId, type).then(function(item) { + var matches = {}; + item.matched_at = new Date(); + matches[item.service] = item; + services.forEach(function(service) { + if (service.id == item.service) { + return; + } + matches[service.id] = {service: service.id}; + service.search(item).then(function(match) { + match.matched_at = new Date(); + var update = {}; + update["services." + match.service] = match; + req.db.matches.update({_id: item.service + "$$" + item.id}, {"$set": update}); + }); + }); + return req.db.matches.save({_id: item.service + "$$" + item.id, created_at: new Date(), services:matches}).then(function() { + var shares = Object.keys(matches).map(function (key) {return matches[key]}); + Router.run(routes, req.url, function (Handler) { + var App = React.createFactory(Handler); + var content = React.renderToString(App({shares: shares})); + res.send('\n' + content.replace("", "")); + }); + }); + }) + } var shares = Object.keys(doc.services).map(function (key) {return doc.services[key]}); if (req.params.format == "json") { return res.json({shares:shares});