From c48d6bde13f34f4b3b5b2e797283b6df9b1bac01 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Thu, 2 May 2013 21:09:50 +0100 Subject: [PATCH] add tavern chat --- src/app/party.coffee | 18 +++++++++++++----- src/server/store.coffee | 16 ++++++++++++++++ views/app/game-pane.html | 25 ++++++++++++++++++------- views/app/party.html | 6 ++++-- 4 files changed, 51 insertions(+), 14 deletions(-) diff --git a/src/app/party.coffee b/src/app/party.coffee index ee010aaf60..bff81e883b 100644 --- a/src/app/party.coffee +++ b/src/app/party.coffee @@ -39,6 +39,7 @@ module.exports.partySubscribe = partySubscribe = (page, model, params, next, cb) return page.redirect('/logout') #delete model.session.userId finished = (descriptors, paths) -> + descriptors.push 'tavern'; paths.push '_tavern' model.subscribe.apply model, descriptors.concat -> [err, refs] = [arguments[0], arguments] return next(err) if err @@ -158,17 +159,24 @@ module.exports.app = (appExports, model, app) -> Chat Functionality ### - appExports.partySendChat = -> - chat = model.at '_party.chat' + sendChat = (path, input) -> + chat = model.at path chat.unshift id: model.id() - text: model.get('_chatMessage') + text: model.get(input) 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 + model.set(input, '') chat.remove 200 # keep a max messages cap + appExports.partySendChat = -> + sendChat('_party.chat', '_chatMessage') + model.set '_user.party.lastMessageSeen', model.get('_party.chat')[0].id + + appExports.tavernSendChat = -> + model.setNull '_tavern.chat', {messages:[]} #we can remove this later, first time run only + sendChat('_tavern.chat.messages', '_tavernMessage') + app.on 'render', (ctx) -> $('#party-tab-link').on 'shown', (e) -> messages = model.get('_party.chat') diff --git a/src/server/store.coffee b/src/server/store.coffee index b83ef268a4..b11aa68655 100644 --- a/src/server/store.coffee +++ b/src/server/store.coffee @@ -8,6 +8,7 @@ Setup read / write access module.exports.customAccessControl = (store) -> userAccess(store) partySystem(store) + tavernSystem(store) REST(store) ### @@ -115,3 +116,18 @@ partySystem = (store) -> # return err(derbyAuth.SESSION_INVALIDATED_ERROR) if derbyAuth.bustedSession(@) return accept(false) if derbyAuth.bustedSession(@) accept(true) + +### + LFG / tavern system +### +tavernSystem = (store) -> + store.readPathAccess 'tavern', -> + accept = arguments[arguments.length-2] + return accept(false) if derbyAuth.bustedSession(@) + accept(true) + + store.writeAccess "*", "tavern.*", -> + accept = arguments[arguments.length-2] + return accept(false) if derbyAuth.bustedSession(@) + accept(true) + diff --git a/views/app/game-pane.html b/views/app/game-pane.html index 2bc1dca658..026e2e90f0 100644 --- a/views/app/game-pane.html +++ b/views/app/game-pane.html @@ -7,9 +7,7 @@