From 6245d0adce15cccf83e2129e1155b7ea86faea93 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Tue, 5 Feb 2013 01:37:13 -0500 Subject: [PATCH] setup party model subscriptions (currently very inefficient, and unsubscribe not being utilized) --- src/app/index.coffee | 12 +++--------- src/app/party.coffee | 31 ++++++++++++++++++++++--------- src/server/store.coffee | 5 +++++ views/app/index.html | 12 ++++++------ 4 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/app/index.coffee b/src/app/index.coffee index 6276f8ff01..9f77cbcb8e 100644 --- a/src/app/index.coffee +++ b/src/app/index.coffee @@ -11,6 +11,7 @@ scoring = require './scoring' schema = require './schema' helpers = require './helpers' browser = require './browser' +party = require './party' helpers.viewHelpers view _ = require('underscore') @@ -24,10 +25,6 @@ setupModelFns = (model) -> # also update in scoring.coffee. TODO create a function accessible in both locations (lvl*100)/5 -# model.fn '_party', '_user.party', (ids) -> -# model.fetch model.query('users').party(ids), (err, party) -> -# model.set '_view.party', party - # ========== ROUTES ========== get '/', (page, model, next) -> @@ -64,10 +61,7 @@ get '/', (page, model, next) -> setupListReferences(model) setupModelFns(model) - # Subscribe to friends -# if obj.party?.current? -# model.subscribe model.query('users').party(obj.party), (err, party) -> -# model.ref '_party', party + party.server(model) page.render() @@ -96,7 +90,7 @@ ready (model) -> browser.setupTour(model) browser.setupGrowlNotifications(model) unless model.get('_view.mobileDevice') - require('./party')(exports, model) + party.app(exports, model) require('../server/private').app(exports, model) diff --git a/src/app/party.coffee b/src/app/party.coffee index 7beba07e1b..9ea816407a 100644 --- a/src/app/party.coffee +++ b/src/app/party.coffee @@ -1,14 +1,23 @@ _ = require('underscore') -module.exports = (appExports, model) -> +module.exports.server = (model) -> + obj = model.get('_user') + if obj.party?.current + model.subscribe model.query('parties').withId(obj.party.current), (err, parties) -> + party = parties.at(0) + model.ref '_party', party + model.subscribe model.query('users').party(party.get('members')), (err, members) -> + model.ref '_partyMembers', members + +module.exports.app = (exports, model) -> user = model.at('_user') - appExports.partyCreate = -> + exports.partyCreate = -> newParty = model.get("_newParty") id = model.add 'parties', { name: newParty, leader: user.get('id'), members: [], invites: [] } user.set 'party', {current: id, invitation: null, leader: true} - appExports.partyInvite = -> + exports.partyInvite = -> id = model.get('_newPartyMember').replace(/[\s"]/g, '') return if _.isEmpty(id) @@ -30,18 +39,18 @@ module.exports = (appExports, model) -> #model.set '_newPartyMember', '' #window.location.reload() #TODO break old subscription, setup new subscript, remove this reload - appExports.partyAccept = -> + exports.partyAccept = -> invitation = user.get('party.invitation') user.set 'party.current', invitation user.set 'party.invitation', null model.push "parties.#{invitation}.members", user.get('id') window.location.reload() - appExports.partyReject = -> + exports.partyReject = -> user.set 'party.invitation', null # TODO notify sender - appExports.partyLeave = -> + exports.partyLeave = -> id = user.get('party.current') user.set 'party.current', null members = model.get ("parties.#{id}.members") @@ -49,7 +58,11 @@ module.exports = (appExports, model) -> model.set "parties.#{id}.members", members.slice(index) window.location.reload() - appExports.partyDisband = -> + exports.partyDisband = -> - - user.on 'set', 'parties.invitation', (after, before) -> +# user.on 'set', 'parties.invitation', (after, before) -> +# +# model.on '*', '_party.members', (ids) -> +# # TODO unsubscribe to previous subscription +# model.subscribe model.query('users').party(ids), (err, members) -> +# model.ref '_view.partyMembers', members diff --git a/src/server/store.coffee b/src/server/store.coffee index e36aaa3442..07e2357af1 100644 --- a/src/server/store.coffee +++ b/src/server/store.coffee @@ -79,6 +79,11 @@ module.exports.customAccessControl = (store) -> store.queryAccess "users", "party", (ids, next) -> next(true) # no harm in public user stats + store.query.expose "parties", "withId", (id) -> + @where("id").equals(id) + store.queryAccess "parties", "withId", (id, next) -> + next(true) + store.readPathAccess "parties.*", -> arguments[arguments.length-1](true) diff --git a/views/app/index.html b/views/app/index.html index 53a9113506..4ebdb3fa9d 100644 --- a/views/app/index.html +++ b/views/app/index.html @@ -113,14 +113,14 @@

- {#if _user.party.current}Invite Member To "{_user.party.current}" - {else if _user.party.invitation}You're Invited To A Party + {#if _user.party.current}Invite Member To "{_party.name}" + {else if _user.party.invitation}You're Invited To "{_party.name}" {else}Create A Party{/}

{#if _user.party.current} - {#each _party as :member} + {#each _partyMembers as :member} {:member.id} {/}
@@ -229,8 +229,8 @@ - {#if _user.flags.partyEnabled} - {#each _party as :member} + {#if _party} + {#each _partyMembers as :member}
@@ -319,7 +319,7 @@

Rewards

-
{gold(_user.stats.money)} {silver(_user.stats.money)}
+
{gold(_user.stats.gp)} {silver(_user.stats.gp)}