mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-08-05 03:52:14 +00:00
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:
parent
2fcf5632ef
commit
747b6e7930
1 changed files with 15 additions and 8 deletions
|
|
@ -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 ==========
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue