mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-08-03 08:21:07 +00:00
notify of new chat messages
This commit is contained in:
parent
f8e592d68f
commit
c3eadab4dc
6 changed files with 39 additions and 14 deletions
|
|
@ -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 }
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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 />
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in a new issue