rename everything "friends" to "party", since we may use friends for

following/followers feature
This commit is contained in:
Tyler Renelle 2013-02-04 14:10:20 -05:00
parent 5e7187dbcd
commit 57a7edc5d3
5 changed files with 40 additions and 39 deletions

View file

@ -112,16 +112,16 @@ module.exports.setupGrowlNotifications = (model) ->
user.on 'set', 'flags.partyEnabled', (captures, args) ->
return unless captures == true
message = "Congratulations, you have unlocked the Party System! You can now group with your friends by adding their User Ids."
$('#add-friend-button').popover
$('#add-party-button').popover
title: "Pary System Unlocked"
placement: 'bottom'
trigger: 'manual'
html: true
content: "<div class='party-system-popover'>
<img src='/img/BrowserQuest/favicon.png' />
#{message} <a href='#' onClick=\"$('#add-friend-button').popover('hide');return false;\">[Close]</a>
#{message} <a href='#' onClick=\"$('#add-party-button').popover('hide');return false;\">[Close]</a>
</div>"
$('#add-friend-button').popover 'show'
$('#add-party-button').popover 'show'
# Setup listeners which trigger notifications

View file

@ -24,9 +24,9 @@ setupModelFns = (model) ->
# also update in scoring.coffee. TODO create a function accessible in both locations
(lvl*100)/5
# model.fn '_user._friends', '_user.friends', (friendIds) ->
# model.fetch model.query('users').friends(friendIds), (err, friends) ->
# model.set '_view.friends', friends
# model.fn '_party', '_user.party', (ids) ->
# model.fetch model.query('users').party(ids), (err, party) ->
# model.set '_view.party', party
# ========== ROUTES ==========
@ -65,9 +65,9 @@ get '/', (page, model, next) ->
setupModelFns(model)
# Subscribe to friends
if !_.isEmpty(user.get('friends'))
model.subscribe model.query('users').friends(user.get('friends')), (err, friends) ->
model.ref '_friends', friends
if !_.isEmpty(user.get('party'))
model.subscribe model.query('users').party(user.get('party')), (err, party) ->
model.ref '_party', party
page.render()
@ -291,22 +291,23 @@ ready (model) ->
exports.setArmorsetV1 = -> user.set('preferences.armorSet', 'v1')
exports.setArmorsetV2 = -> user.set('preferences.armorSet', 'v2')
exports.addFriend = ->
friendId = model.get('_newFriend').replace(/[\s"]/g, '')
return if _.isEmpty(friendId)
if user.get('friends').indexOf(friendId) != -1
model.set "_view.addFriendError", "#{friendId} already in party."
exports.addParty = ->
id = model.get('_newPartyMember').replace(/[\s"]/g, '')
debugger
return if _.isEmpty(id)
if user.get('party').indexOf(id) != -1
model.set "_view.addPartyError", "#{id} already in party."
return
query = model.query('users').friends([friendId])
query = model.query('users').party([id])
model.fetch query, (err, users) ->
friend = users.at(0).get()
if friend?.id?
user.push('friends', friendId)
$('#add-friend-modal').modal('hide')
partyMember = users.at(0).get()
if partyMember?.id?
user.push('party', id)
$('#add-party-modal').modal('hide')
window.location.reload() #TODO break old subscription, setup new subscript, remove this reload
model.set '_newFriend', ''
model.set '_newPartyMember', ''
else
model.set "_view.addFriendError", "User with id #{friendId} not found."
model.set "_view.addPartyError", "User with id #{id} not found."
exports.emulateNextDay = ->
yesterday = +moment().subtract('days', 1).toDate()

View file

@ -12,7 +12,7 @@ userSchema =
notifications: { kickstarter: 'show' }
preferences: { gender: 'm', armorSet: 'v1' }
flags: { partyEnabled: false }
friends: []
party: []
tasks: {}
habitIds: []
dailyIds: []
@ -36,7 +36,7 @@ module.exports.updateUser = (batch) ->
user = batch.user
batch.set('notifications.kickstarter', 'show') unless user.get('notifications.kickstarter')
batch.set('friends', []) unless !_.isEmpty(user.get('friends'))
batch.set('party', []) unless !_.isEmpty(user.get('party'))
# Preferences, including API key
# Some side-stepping to avoid unecessary set (one day, model.update... one day..)
@ -83,7 +83,7 @@ module.exports.BatchUpdate = BatchUpdate = (model) ->
# Additionally, for some reason after getting the user object, changing properies manually (userObj.stats.hp = 50)
# seems to actually run user.set('stats.hp',50) which we don't want to do - so we deepClone here
#_.each Object.keys(userSchema), (key) -> obj[key] = lodash.cloneDeep user.get(key)
obj = model.get('users.'+user.get('id'), {getRef:false})
obj = model.get('users.'+user.get('id'), true)
###
Handles updating the user model. If this is an en-mass operation (eg, server cron), changes are queued

View file

@ -32,9 +32,9 @@ module.exports = (store) ->
###
Party permissions
###
store.query.expose "users", "friends", (ids) ->
store.query.expose "users", "party", (ids) ->
@where("id").within(ids)
.only('stats', 'preferences.gender', 'preferences.armorSet', 'items', 'auth.local.username', 'auth.facebook.displayName')
store.queryAccess "users", "friends", (ids, next) ->
store.queryAccess "users", "party", (ids, next) ->
next(true) # no harm in public user stats

View file

@ -108,12 +108,12 @@
</@footer>
</app:myModal>
<app:myModal modalId="add-friend-modal" header="Add Friend">
<form x-bind="submit: addFriend">
{#if _view.addFriendError}
<div class='alert alert-danger'>{_view.addFriendError}</div>
<app:myModal modalId="add-party-modal" header="Add Party Member">
<form x-bind="submit: addParty">
{#if _view.addPartyError}
<div class='alert alert-danger'>{_view.addPartyError}</div>
{/}
<input type="text" class="input-medium search-query" value="{_newFriend}">
<input type="text" class="input-medium search-query" value="{_newPartyMember}">
<input type="submit" class="btn" value="Add" />
</form>
</app:myModal>
@ -158,7 +158,7 @@
<div class='container-fluid'>
<div class='row-fluid'>
<div id=character class='{#if _friends}span9{else}span5{/}'>
<div id=character class='{#if _party}span9{else}span5{/}'>
<table>
<tr>
@ -172,7 +172,7 @@
</td>
<!-- Progress Bars -->
<td id="bars" style="width:{#if _friends}70%{else}90%{/};">
<td id="bars" style="width:{#if _party}70%{else}90%{/};">
<div class="progress progress-danger" rel=tooltip data-placement=bottom title="Health">
<div class="bar" style="width: {percent(_user.stats.hp, 50)}%;"></div>
<span class="progress-text"><i class=icon-heart></i> {round(_user.stats.hp)} / 50</span>
@ -191,16 +191,16 @@
<!-- Party -->
{#if _user.flags.partyEnabled}
{#each _friends as :friend}
<td class="avatar friend-avatar" rel="tooltip" title="{username(:friend.auth)}" data-placement="bottom" >
{#each _party as :member}
<td class="avatar party-avatar" rel="tooltip" title="{username(:member.auth)}" data-placement="bottom" >
<div class='avatar-sprites'>
<img class='weapon weapon-{:friend.items.weapon}' src="/img/BrowserQuest/habitrpg_mods/weapon{:friend.items.weapon}.png" />
<img class='armor armor-{:friend.items.armor}' src="/img/BrowserQuest/habitrpg_mods/{currentArmor(:friend.preferences.gender, :friend.items.armor, :friend.preferences.armorSet)}" />
<img class='weapon weapon-{:member.items.weapon}' src="/img/BrowserQuest/habitrpg_mods/weapon{:member.items.weapon}.png" />
<img class='armor armor-{:member.items.armor}' src="/img/BrowserQuest/habitrpg_mods/{currentArmor(:member.preferences.gender, :member.items.armor, :member.preferences.armorSet)}" />
</div>
<div id="lvl"><span class="badge badge-info">Lvl {:friend.stats.lvl}</span></div>
<div id="lvl"><span class="badge badge-info">Lvl {:member.stats.lvl}</span></div>
</td>
{/}
<td><a class="btn" id="add-friend-button" data-target="#add-friend-modal" data-toggle="modal"><i class="icon-user"></i></a></td>
<td><a class="btn" id="add-party-button" data-target="#add-party-modal" data-toggle="modal"><i class="icon-user"></i></a></td>
{/}
</tr>