mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-08-03 08:21:07 +00:00
closure queries fully setup, but they break on page refresh. just
regenerate each time for now
This commit is contained in:
parent
d8bc88dcb0
commit
6ce382af51
2 changed files with 47 additions and 44 deletions
|
|
@ -65,13 +65,9 @@ get '/', (page, model, next) ->
|
|||
setupModelFns(model)
|
||||
|
||||
if obj.party?.current?
|
||||
party.partyQuery(model, obj.party.current, true).subscribe (err, res) ->
|
||||
throw err if err
|
||||
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', res
|
||||
party.partySubscribe model, obj.party.current, (p) ->
|
||||
console.log {current:obj.party.current, pMembers: p.get('members')}
|
||||
party.membersSubscribe model, p.get('members'), (m) ->
|
||||
|
||||
# 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
|
||||
|
|
|
|||
|
|
@ -1,28 +1,45 @@
|
|||
_ = require('underscore')
|
||||
schema = require './schema'
|
||||
|
||||
_partyQ = null
|
||||
_membersQ = null
|
||||
_subscriptions =
|
||||
party:
|
||||
query: null
|
||||
id: null
|
||||
members:
|
||||
query: null
|
||||
ids: null
|
||||
|
||||
module.exports.partyQuery = partyQuery = (model, id, reset) ->
|
||||
if !_partyQ? or reset
|
||||
_partyQ = model.query('parties').withId(id)
|
||||
_partyQ
|
||||
module.exports.partySubscribe = partySubscribe = (model, id, cb) ->
|
||||
# New subscription coming in, or reset subscription with new parameters
|
||||
if true #!_subscriptions.party.query? or _subscriptions.party.id != id
|
||||
_subscriptions.party.query = model.query('parties').withId(id)
|
||||
_subscriptions.party.id = id
|
||||
_subscriptions.party.query.subscribe (err, p) ->
|
||||
throw err if err
|
||||
model.ref '_party', p.at(0)
|
||||
cb(p.at(0)) if cb?
|
||||
else
|
||||
cb(model.at('_party')) if cb?
|
||||
|
||||
module.exports.membersQuery = membersQuery = (model, ids, reset) ->
|
||||
if !_membersQ? or reset
|
||||
_membersQ = model.query('users').party(ids)
|
||||
_membersQ
|
||||
module.exports.membersSubscribe = membersSubscribe = (model, ids, cb) ->
|
||||
# New subscription coming in, or reset subscription with new parameters
|
||||
if true #!_subscriptions.members.query? or !_.isEmpty(_.difference(_subscriptions.members.ids, ids))
|
||||
_subscriptions.members.query = model.query('users').party(ids)
|
||||
_subscriptions.members.ids = ids
|
||||
_subscriptions.members.query.subscribe (err, m) ->
|
||||
throw err if err
|
||||
model.ref '_partyMembers', m
|
||||
cb(m) if cb?
|
||||
else
|
||||
cb(model.at('_partyMembers')) if cb?
|
||||
|
||||
setupListeners = (model) ->
|
||||
|
||||
model.on 'set', '_user.party.invitation', (id) ->
|
||||
model.subscribe model.query('parties').withId(id), (err, party) -> model.set '_party', party
|
||||
partySubscribe model, id
|
||||
|
||||
model.on '*', '_party.members', (ids) ->
|
||||
# TODO unsubscribe to previous subscription
|
||||
q = model.query('users').party(ids)
|
||||
model.subscribe q, (err, members) -> model.ref '_partyMembers', members
|
||||
membersSubscribe model, ids
|
||||
|
||||
module.exports.app = (appExports, model) ->
|
||||
user = model.at('_user')
|
||||
|
|
@ -32,10 +49,7 @@ module.exports.app = (appExports, model) ->
|
|||
newParty = model.get("_newParty")
|
||||
id = model.add 'parties', { name: newParty, leader: user.get('id'), members: [user.get('id')], invites:[] }
|
||||
user.set 'party', {current: id, invitation: null, leader: true}
|
||||
model.subscribe model.query('parties').withId(id), (err, party) ->
|
||||
throw err if err
|
||||
model.ref '_party', party.at(0)
|
||||
setupListeners(model)
|
||||
partySubscribe model, id
|
||||
|
||||
appExports.partyInvite = ->
|
||||
id = model.get('_newPartyMember').replace(/[\s"]/g, '')
|
||||
|
|
@ -53,29 +67,22 @@ module.exports.app = (appExports, model) ->
|
|||
model.set "_view.partyError", "User already in a party or pending invitation."
|
||||
return
|
||||
else
|
||||
party = model.at '_party'
|
||||
party.push "invites", id
|
||||
model.set "users.#{id}.party.invitation", party.get('id')
|
||||
p = model.at '_party'
|
||||
p.push "invites", id
|
||||
model.set "users.#{id}.party.invitation", p.get('id')
|
||||
$.bootstrapGrowl "Invitation Sent."
|
||||
$('#party-modal').modal('hide')
|
||||
model.subscribe model.query('users').party(party.get('members')), (err, members) ->
|
||||
throw err if err
|
||||
model.ref '_partyMembers', members
|
||||
membersSubscribe model, p.get('members')
|
||||
model.set '_newPartyMember', ''
|
||||
#TODO break old subscription, setup new subscript, remove this reload
|
||||
|
||||
appExports.partyAccept = ->
|
||||
invitation = user.get('party.invitation')
|
||||
model.subscribe model.query("parties").withId(invitation), (err, parties) ->
|
||||
throw err if err
|
||||
party = parties.at(0)
|
||||
party.push 'members', user.get('id')
|
||||
partySubscribe model, invitation, (p) ->
|
||||
p.push 'members', user.get('id')
|
||||
user.set 'party.invitation', null
|
||||
user.set 'party.current', party.get('id')
|
||||
model.ref '_party', party
|
||||
model.subscribe model.query('users').party(party.get('members')), (err, members) ->
|
||||
throw err if err
|
||||
model.ref '_partyMembers', members
|
||||
user.set 'party.current', p.get('id')
|
||||
membersSubscribe model, p.get('members'), (m)
|
||||
|
||||
appExports.partyReject = ->
|
||||
user.set 'party.invitation', null
|
||||
|
|
@ -85,15 +92,15 @@ module.exports.app = (appExports, model) ->
|
|||
|
||||
appExports.partyLeave = ->
|
||||
id = user.set 'party.current', null
|
||||
party = model.at '_party'
|
||||
members = party.get('members')
|
||||
p = model.at '_party'
|
||||
members = p.get('members')
|
||||
index = members.indexOf(user.get('id'))
|
||||
members.splice(index,1)
|
||||
party.set 'members', members
|
||||
p.set 'members', members
|
||||
if (members.length == 0)
|
||||
# last member out, kill the party
|
||||
model.del "parties.#{id}"
|
||||
model.unsubscribe model.query('parties').withId(id)
|
||||
_subscriptions.party.query.unsubscribe()
|
||||
model.set('_party', null)
|
||||
|
||||
#exports.partyDisband = ->
|
||||
|
|
|
|||
Loading…
Reference in a new issue