BREAKING CHANGE - fetch _partyMembers, subscribe to _party, _user,

_tavern. Could cut back substantially on subscription overhead. fetch
is async to the subscriptions, need to test on beta that this is kosher
This commit is contained in:
Tyler Renelle 2013-05-11 12:13:48 +01:00
parent 2fcf5632ef
commit 747b6e7930

View file

@ -69,7 +69,7 @@ setupSubscriptions = (page, model, params, next, cb) ->
selfQ = model.query('users').withId(uuid) #keep this for later
partyQ = model.query('parties').withMember(uuid)
partyQ.fetch (err, party) ->
partyQ.subscribe (err, party) ->
return next(err) if err
finished = (descriptors, paths) ->
@ -82,16 +82,23 @@ setupSubscriptions = (page, model, params, next, cb) ->
return page.redirect('/logout') #delete model.session.userId
return cb()
party = party.get()
# (1) Solo player
return finished([selfQ, 'tavern'], ['_user', '_tavern']) unless party
unless party.get()
model.unsubscribe partyQ, (-> ) # they didn't have a party, let's not keep that subscription around. Also, async so we don't have to wait
return finished([selfQ, 'tavern'], ['_user', '_tavern'])
## (2) Party has members, subscribe to those users too
membersQ = model.query('users').party(party.members)
# Note - selfQ *must* come after membersQ in subscribe, otherwise _user will only get the fields restricted by party-members in
# store.coffee. Strang bug, but easy to get around
return finished [partyQ, membersQ, selfQ, 'tavern'], ['_party', '_partyMembers', '_user', '_tavern']
model.ref '_party', party
membersQ = model.query('users').party(party.get('members'))
# Fetch instead of subscribe. There's nothing dynamic we need from members just yet, they'll update _party instead.
# This may change in the future.
membersQ.fetch (err, members) ->
return next(err) if err
model.ref '_partyMembers', members
# Note - selfQ *must* come after membersQ in subscribe, otherwise _user will only get the fields restricted by party-members in store.coffee. Strang bug, but easy to get around
return finished([selfQ, 'tavern'], ['_user', '_tavern'])
# ========== ROUTES ==========