mirror of
https://github.com/sudoxnym/habitica-self-host.git
synced 2026-08-01 03:30:25 +00:00
setup party model subscriptions (currently very inefficient, and
unsubscribe not being utilized)
This commit is contained in:
parent
a67c82aab5
commit
6245d0adce
4 changed files with 36 additions and 24 deletions
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -113,14 +113,14 @@
|
|||
|
||||
<app:myModal modalId="party-modal" header="Party">
|
||||
<h2>
|
||||
{#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{/}
|
||||
</h2>
|
||||
|
||||
{#if _user.party.current}
|
||||
<!-- In a party -->
|
||||
{#each _party as :member}
|
||||
{#each _partyMembers as :member}
|
||||
{:member.id}
|
||||
{/}
|
||||
<form x-bind="submit: partyInvite">
|
||||
|
|
@ -229,8 +229,8 @@
|
|||
</td>
|
||||
|
||||
<!-- Party -->
|
||||
{#if _user.flags.partyEnabled}
|
||||
{#each _party as :member}
|
||||
{#if _party}
|
||||
{#each _partyMembers as :member}
|
||||
<td class="avatar party-avatar" rel="tooltip" title="{username(:member.auth)}" data-placement="bottom" >
|
||||
<div class='avatar-sprites'>
|
||||
<img class='weapon weapon-{:member.items.weapon}' src="/img/BrowserQuest/habitrpg_mods/weapon{:member.items.weapon}.png" />
|
||||
|
|
@ -319,7 +319,7 @@
|
|||
<!--Title -->
|
||||
<div class="row-fluid">
|
||||
<div class="span6"><h2>Rewards</h2></div>
|
||||
<div class="span6" id="money">{gold(_user.stats.money)} <img src='/img/coin_single_gold.png'/> {silver(_user.stats.money)} <img src='/img/coin_single_silver.png'/></div>
|
||||
<div class="span6" id="money">{gold(_user.stats.gp)} <img src='/img/coin_single_gold.png'/> {silver(_user.stats.gp)} <img src='/img/coin_single_silver.png'/></div>
|
||||
</div>
|
||||
|
||||
<!-- Content -->
|
||||
|
|
|
|||
Loading…
Reference in a new issue