From d8bc88dcb0bb0272504a99e26403e72808c2223b Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Tue, 5 Feb 2013 23:42:30 -0500 Subject: [PATCH] closure access to party and members query, setting up for unsubscription / resubscription --- src/app/index.coffee | 13 +++++-------- src/app/party.coffee | 13 +++++++++++++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/app/index.coffee b/src/app/index.coffee index 418b331062..d1bc21c190 100644 --- a/src/app/index.coffee +++ b/src/app/index.coffee @@ -65,16 +65,13 @@ get '/', (page, model, next) -> setupModelFns(model) if obj.party?.current? - throw err if err - partiesQ = model.query('parties').withId(obj.party.current) - model.subscribe partiesQ, (err, parties) -> + party.partyQuery(model, obj.party.current, true).subscribe (err, res) -> throw err if err - party = parties.at(0) - model.ref '_party', party - membersQ = model.query('users').party(parties.at(0).get('members')) - model.subscribe membersQ, (err, members) -> + p = res.at(0) + model.ref '_party', p + party.membersQuery(model, p.get('members'), true).subscribe (err, res) -> throw err if err - model.ref '_partyMembers', members + model.ref '_partyMembers', res # Here's a hack we need to get fixed (hopefully Lever will) - later model.queries override previous model.queries' # returned fields. Aka, we need this here otherwise we only get the "public" fields for the current user, which diff --git a/src/app/party.coffee b/src/app/party.coffee index 9e6a0db980..532dfeb691 100644 --- a/src/app/party.coffee +++ b/src/app/party.coffee @@ -1,6 +1,19 @@ _ = require('underscore') schema = require './schema' +_partyQ = null +_membersQ = null + +module.exports.partyQuery = partyQuery = (model, id, reset) -> + if !_partyQ? or reset + _partyQ = model.query('parties').withId(id) + _partyQ + +module.exports.membersQuery = membersQuery = (model, ids, reset) -> + if !_membersQ? or reset + _membersQ = model.query('users').party(ids) + _membersQ + setupListeners = (model) -> model.on 'set', '_user.party.invitation', (id) ->