| ... | ... |
@@ -59,13 +59,16 @@ this.App = |
| 59 | 59 |
) |
| 60 | 60 |
) |
| 61 | 61 |
|
| 62 |
- sendMessage: (message, chatId, from, callbackOk, callbackFail) -> |
|
| 62 |
+ sendMessage: (message, to, from, callbackOk, callbackFail) -> |
|
| 63 |
+ App.Com.trigger(event: 'app.chat.sendMessage', data: {message: message, to: to, from: from}, success: callbackOk, error: callbackFail)
|
|
| 64 |
+ |
|
| 65 |
+ sendMultiMessage: sendMessage: (message, chatId, from, callbackOk, callbackFail) -> |
|
| 63 | 66 |
App.Com.trigger(event: 'app.chat.sendMessage', data: {message: message, chatId: chatId, from: from}, success: callbackOk, error: callbackFail)
|
| 64 | 67 |
|
| 65 |
- openNewChatId: (chatOwner, attendant, chat) -> |
|
| 66 |
- @trigger(event: 'app.chat.newChatId', data: {chatOwner: chatOwner}, success: (response) =>
|
|
| 68 |
+ openNewMultiChatId: (chatOwner, attendant, chat) -> |
|
| 69 |
+ @trigger(event: 'app.chat.newMultiChatId', data: {chatOwner: chatOwner}, success: (response) =>
|
|
| 67 | 70 |
chat.setChatId(response.id) |
| 68 |
- @trigger(event: 'app.chat.addToChat', data: {chatOwner: chatOwner, chatId: response.id, jid: attendant} )
|
|
| 71 |
+ @trigger(event: 'app.chat.addToMultiChat', data: {chatOwner: chatOwner, chatId: response.id, jid: attendant} )
|
|
| 69 | 72 |
) |
| 70 | 73 |
|
| 71 | 74 |
updateMyStatus: (message, state)-> |
| ... | ... |
@@ -9,7 +9,7 @@ class Xmpp.Models.Chat extends Xmpp.Models.Model |
| 9 | 9 |
initialize: -> |
| 10 | 10 |
_.bindAll(this) |
| 11 | 11 |
|
| 12 |
- App.Com.openNewChatId(@get('who').get('jid'), @get('withWhom').get('jid'), this)
|
|
| 12 |
+ #App.Com.openNewMultiChatId(@get('who').get('jid'), @get('withWhom').get('jid'), this)
|
|
| 13 | 13 |
|
| 14 | 14 |
setChatId: (id) -> |
| 15 | 15 |
App.debug ['chat has id', id] |
| ... | ... |
@@ -17,7 +17,10 @@ class Xmpp.Models.Me extends Xmpp.Models.Contact |
| 17 | 17 |
@view = new Xmpp.Views.Contacts.MeView(model: this) |
| 18 | 18 |
@view.render() |
| 19 | 19 |
|
| 20 |
- sendMessage: (message, chatId, callbackOk, callbackFail) -> |
|
| 20 |
+ sendMessage: (message, chatId, to, callbackOk, callbackFail) -> |
|
| 21 | 21 |
App.debug ['sending from:', @get('jid'), message]
|
| 22 | 22 |
|
| 23 |
- App.Com.sendMessage(message, chatId, @get('jid'), callbackOk, callbackFail)
|
|
| 24 | 23 |
\ No newline at end of file |
| 24 |
+ if (! chatId) |
|
| 25 |
+ App.Com.sendMessage(message, to, @get('jid'), callbackOk, callbackFail)
|
|
| 26 |
+ else |
|
| 27 |
+ App.Com.sendMultiMessage(message, chatId, @get('jid'), callbackOk, callbackFail)
|
|
| 25 | 28 |
\ No newline at end of file |
| ... | ... |
@@ -51,7 +51,8 @@ class Xmpp.Views.Chat.WindowView extends Backbone.View |
| 51 | 51 |
input.val('').focus()
|
| 52 | 52 |
|
| 53 | 53 |
if (message) |
| 54 |
- @tab.getOwner().sendMessage(message, @tab.getChatId() |
|
| 54 |
+ attendant = @tab.getAttendant().get('jid')
|
|
| 55 |
+ @tab.getOwner().sendMessage(message, @tab.getChatId(), attendant |
|
| 55 | 56 |
, (message) => |
| 56 | 57 |
@sendSuccess(@tab.getOwner(), message) |
| 57 | 58 |
, (message) -> |
| ... | ... |
@@ -63,4 +63,7 @@ class Xmpp.Views.Tabbar.TabView extends Backbone.View |
| 63 | 63 |
@model.get('who')
|
| 64 | 64 |
|
| 65 | 65 |
getChatId: -> |
| 66 |
- @model.get('chatId')
|
|
| 67 | 66 |
\ No newline at end of file |
| 67 |
+ @model.get('chatId')
|
|
| 68 |
+ |
|
| 69 |
+ getAttendant: -> |
|
| 70 |
+ @model.get('withWhom')
|
|
| 68 | 71 |
\ No newline at end of file |
| ... | ... |
@@ -23,7 +23,7 @@ class WsChatController < WsController |
| 23 | 23 |
end |
| 24 | 24 |
end |
| 25 | 25 |
|
| 26 |
- def open_chat |
|
| 26 |
+ def open_multichat |
|
| 27 | 27 |
id = Time.now.to_f |
| 28 | 28 |
me = message[:chatOwner] |
| 29 | 29 |
client = find_client(me) |
| ... | ... |
@@ -49,7 +49,7 @@ class WsChatController < WsController |
| 49 | 49 |
client = find_client(me) |
| 50 | 50 |
|
| 51 | 51 |
if client |
| 52 |
- messages = build_messages(message[:message], client, message[:chatId]) |
|
| 52 |
+ messages = build_messages(message[:message], client, message[:chatId], message[:to]) |
|
| 53 | 53 |
|
| 54 | 54 |
# Xmpp4r doesn't support XEP-0033 (multicast messages) |
| 55 | 55 |
messages.each do |message| |
| ... | ... |
@@ -64,9 +64,10 @@ class WsChatController < WsController |
| 64 | 64 |
|
| 65 | 65 |
private |
| 66 | 66 |
|
| 67 |
- def build_messages(message, client_from, chat_id) |
|
| 67 |
+ def build_messages(message, client_from, chat_id, jid_to) |
|
| 68 | 68 |
from = client_from.jid.to_s |
| 69 |
- attendants = connection_store[:opened_chats][client_from][chat_id] |
|
| 69 |
+ |
|
| 70 |
+ attendants = chat_id ? connection_store[:opened_chats][client_from][chat_id] : [jid_to] |
|
| 70 | 71 |
|
| 71 | 72 |
attendants.map do |person| |
| 72 | 73 |
message = Jabber::Message.new(person, message) |
| ... | ... |
@@ -60,8 +60,8 @@ WebsocketRails::EventMap.describe do |
| 60 | 60 |
end |
| 61 | 61 |
|
| 62 | 62 |
namespace :chat do |
| 63 |
- subscribe :newChatId, to: WsChatController, with_method: :open_chat |
|
| 64 |
- subscribe :addToChat, to: WsChatController, with_method: :add_to_chat |
|
| 63 |
+ subscribe :newMultiChatId, to: WsChatController, with_method: :open_multichat |
|
| 64 |
+ subscribe :addToMultiChat, to: WsChatController, with_method: :add_to_multichat |
|
| 65 | 65 |
subscribe :sendMessage, to: WsChatController, with_method: :send_chat_message |
| 66 | 66 |
subscribe :startPollingMessages,to: WsChatController, with_method: :start_polling_messages |
| 67 | 67 |
end |