notify of new chat messages

This commit is contained in:
Tyler Renelle 2013-05-02 20:16:09 +01:00
parent f8e592d68f
commit c3eadab4dc
6 changed files with 39 additions and 14 deletions

View file

@ -24,7 +24,7 @@ removeWhitespace = (str) ->
return '' unless str
str.replace /\s/g, ''
username = module.exports.username = (auth, override) ->
username = (auth, override) ->
#some people define custom profile name in Avatar -> Profile
return override if override?
@ -158,4 +158,8 @@ viewHelpers = (view) ->
view.fn 'friendlyTimestamp', (timestamp) -> moment(timestamp).format('MM/DD h:mm:ss a')
view.fn 'newChatMessages', (messages, lastMessageSeen) ->
return false unless messages?.length > 0
messages && messages[0].id != lastMessageSeen
module.exports = { viewHelpers, removeWhitespace, randomVal, daysBetween, dayMapping, username }

View file

@ -93,7 +93,7 @@ ready (model) ->
require('./character').app(exports, model)
require('./tasks').app(exports, model)
require('./items').app(exports, model)
require('./party').app(exports, model)
require('./party').app(exports, model, app)
require('./profile').app(exports, model)
require('./pets').app(exports, model)
require('../server/private').app(exports, model)

View file

@ -69,7 +69,7 @@ module.exports.partySubscribe = partySubscribe = (page, model, params, next, cb)
membersQ = model.query('users').party(members)
return finished [partyQ, membersQ, selfQ], ['_party', '_partyMembers', '_user']
module.exports.app = (appExports, model) ->
module.exports.app = (appExports, model, app) ->
character = require './character'
browser = require './browser'
helpers = require './helpers'
@ -154,14 +154,27 @@ module.exports.app = (appExports, model) ->
# model.ref '_user', u
# browser.resetDom model
###
Chat Functionality
###
appExports.partySendChat = ->
chat = model.at '_party.chat'
chat.unshift
id: model.id()
text: model.get('_chatMessage')
user: helpers.username(model.get('_user.auth'), model.get('_user.profile.name'))
timestamp: +new Date
, -> model.set('_chatMessage', '')
model.set '_user.party.lastMessageSeen', chat.get()[0].id
chat.remove 200 # keep a max messages cap
# keep a max messages cap
chat.remove 200
app.on 'render', (ctx) ->
$('#party-tab-link').on 'shown', (e) ->
messages = model.get('_party.chat')
return false unless messages?.length > 0
model.set '_user.party.lastMessageSeen', messages[0].id
model.set '_chatMessage', ''
appExports.gotoPartyChat = ->
model.set '_gamePane', true, ->
$('#party-tab-link').tab('show')

View file

@ -8,7 +8,7 @@
<ul class="nav nav-tabs game-tabs">
<li class="active"><a data-toggle='tab' data-target="#profileCustomize"><i class='icon-user'></i> Profile</a></li>
<li class='{#if _user.party.invitation}tab-notification{/}'>
<a data-toggle='tab' data-target="#profileParty"><i class='icon-heart'></i> Party</a>
<a data-toggle='tab' data-target="#profileParty" id='party-tab-link'><i class='icon-heart'></i> Party</a>
</li>
{#if _user.flags.dropsEnabled}
<li><a data-toggle='tab' data-target="#profileInventory"><i class='icon-gift'></i> Inventory</a></li>

View file

@ -40,11 +40,8 @@
<div id="exp-chart" style="display:none;"></div>
<div id=main class="grid">
{#if _gamePane}
<app:game-pane:main />
{else}
<app:tasks:taskLists />
{/}
<div class='{#if _gamePane}hidden{/}'><app:tasks:taskLists /></div>
<div class='{#unless _gamePane}hidden{/}'><app:game-pane:main /></div>
</div>
</div>
<app:footer:footer />

View file

@ -134,11 +134,11 @@
{{else}}
<ul class="nav site-nav">
<li class="flyout">
<h1 class="task-action-btn tile solid user-reporter">{#if _user.party.invitation}<i class='icon-bell'></i> {/}{{username(_user.auth, _user.profile.name)}}</h1>
<h1 class="task-action-btn tile solid user-reporter">{{username(_user.auth, _user.profile.name)}}</h1>
<ul class="flyout-content nav stacked">
<li>
<a class="task-action-btn tile solid" x-bind='click:toggleGamePane'>
{#if _gamePane}Tasks{else}{#if _user.party.invitation}<i class='icon-bell'></i> {/}Options{/}
{#if _gamePane}Tasks{else}Options{/}
</a>
</li>
<li><a class="task-action-btn tile solid" href="/logout">Logout</a></li>
@ -146,4 +146,15 @@
</li>
</ul>
{{/}}
<!-- party invitation notification -->
{#if _user.party.invitation}
<a style='cursor:pointer;' x-bind="click:gotoPartyChat"><i class='icon-user'></i></a>
{/}
<!-- party chat notification -->
{#if newChatMessages(_party.chat,_user.party.lastMessageSeen)}
<a style='cursor:pointer;' x-bind="click:gotoPartyChat"><i class='icon-comment' rel='tooltip' title='New Party Messages'></i></a>
{/}
</div>