| ... | ... |
@@ -3,11 +3,9 @@ class WsChatController < WsController |
| 3 | 3 |
def start_polling_messages |
| 4 | 4 |
connection_store[:clients].each do |client| |
| 5 | 5 |
client.add_message_callback do |message| |
| 6 |
- chat_id = message.attribute('chat_id').to_s
|
|
| 7 |
- |
|
| 8 | 6 |
#noinspection RubyAssignmentExpressionInConditionalInspection |
| 9 | 7 |
if message.body |
| 10 |
- process_incoming_message(message.from, message.to, message.body, chat_id) |
|
| 8 |
+ process_incoming_message(message.from, message.to, message.body, message.attribute('chat_id').to_s)
|
|
| 11 | 9 |
#elsif request = message.first_element('sync_contacts_request')
|
| 12 | 10 |
# # toto mozem prijat len ako admin multichatu |
| 13 | 11 |
# send_contacts(message.from, message.to, request.attribute('chat_id').to_s)
|
| ... | ... |
@@ -18,12 +16,12 @@ class WsChatController < WsController |
| 18 | 18 |
elsif answer = message.first_element('exported_chat')
|
| 19 | 19 |
contacts = xml_contacts_to_array(message.first_element('exported_chat'))
|
| 20 | 20 |
import_people_in_chat(message.from, message.to, answer.attribute('chat_id').to_s, contacts)
|
| 21 |
- #elsif message.attribute('destroy_multichat')
|
|
| 22 |
- # destroy_multichat(to, chat_id) |
|
| 23 |
- #elsif message.attribute('req_update_contacts')
|
|
| 24 |
- # added = xml_contacts_to_array(message.first_element('added'))
|
|
| 25 |
- # removed = xml_contacts_to_array(message.first_element('removed'))
|
|
| 26 |
- # update_attendants_in_multichat(message.from, message.to, chat_id, removed, added) |
|
| 21 |
+ elsif message.attribute('destroy_multichat')
|
|
| 22 |
+ destroy_multichat(message.to, message.attribute('chat_id').to_s)
|
|
| 23 |
+ elsif message.attribute('req_update_contacts')
|
|
| 24 |
+ added = xml_contacts_to_array(message.first_element('added'))
|
|
| 25 |
+ removed = xml_contacts_to_array(message.first_element('removed'))
|
|
| 26 |
+ update_attendants_in_multichat(message.from, message.to, message.attribute('chat_id').to_s, removed, added)
|
|
| 27 | 27 |
end |
| 28 | 28 |
#TODO: upozornit na pisanie spravy |
| 29 | 29 |
#TODO: odoslat informaciu o tom, ze pisem spravu |
| ... | ... |
@@ -124,7 +122,7 @@ class WsChatController < WsController |
| 124 | 124 |
def i_closed_multichat |
| 125 | 125 |
chat_id = message[:chatId] |
| 126 | 126 |
client = find_client(message[:me]) |
| 127 |
- me = client.jid.strip.to_s |
|
| 127 |
+ me = client.jid.to_s |
|
| 128 | 128 |
owner = connection_store[:opened_chats][client][chat_id][:owner] |
| 129 | 129 |
|
| 130 | 130 |
if owner == me |
| ... | ... |
@@ -156,8 +154,8 @@ class WsChatController < WsController |
| 156 | 156 |
client.send(MessageBuilder::send_multichat_contacts(client.jid.strip.to_s, from, chat_id, contacts)) |
| 157 | 157 |
end |
| 158 | 158 |
|
| 159 |
- def update_attendants_in_multichat(from, to, chat_id, removed, added) |
|
| 160 |
- client = find_client(to) |
|
| 159 |
+ def update_attendants_in_multichat(owner, me, chat_id, removed, added) |
|
| 160 |
+ client = find_client(me.strip.to_s) |
|
| 161 | 161 |
|
| 162 | 162 |
contacts = connection_store[:opened_chats][client][chat_id][:attendants] |
| 163 | 163 |
contacts -= removed |
| ... | ... |
@@ -166,13 +164,13 @@ class WsChatController < WsController |
| 166 | 166 |
connection_store[:opened_chats][client][chat_id][:attendants] = contacts |
| 167 | 167 |
|
| 168 | 168 |
if contacts.empty? |
| 169 |
- destroy_multichat(to, chat_id) |
|
| 169 |
+ destroy_multichat(me, chat_id) |
|
| 170 | 170 |
else |
| 171 | 171 |
contacts.each do |contact| |
| 172 |
- client.send(MessageBuilder::send_multichat_contacts(to, contact, chat_id, contacts)) |
|
| 172 |
+ client.send(MessageBuilder::send_multichat_contacts(me.to_s, contact, chat_id, contacts)) |
|
| 173 | 173 |
end |
| 174 | 174 |
|
| 175 |
- sync_contacts_frontend(from, to, chat_id, contacts) |
|
| 175 |
+ sync_contacts_frontend(owner, me, chat_id, contacts) |
|
| 176 | 176 |
end |
| 177 | 177 |
end |
| 178 | 178 |
end |
| 179 | 179 |
\ No newline at end of file |
| ... | ... |
@@ -20,9 +20,9 @@ class WsController < WebsocketRails::BaseController |
| 20 | 20 |
if connection_store[:opened_chats] |
| 21 | 21 |
connection_store[:clients].each do |client| |
| 22 | 22 |
connection_store[:opened_chats][client].each do |chat_id, contacts| |
| 23 |
- # if contacts[:owner] == client.jid.strip.to_s |
|
| 24 |
- # chats_owner[client] = chat_id |
|
| 25 |
- # end |
|
| 23 |
+ if contacts[:owner] == client.jid.to_s |
|
| 24 |
+ chats_owner[client] = chat_id |
|
| 25 |
+ end |
|
| 26 | 26 |
end |
| 27 | 27 |
end |
| 28 | 28 |
end |
| ... | ... |
@@ -34,30 +34,30 @@ class WsController < WebsocketRails::BaseController |
| 34 | 34 |
chats = where_i_am_multichat_owner() |
| 35 | 35 |
chats.each do |client, chat_id| |
| 36 | 36 |
contacts = connection_store[:opened_chats][client][chat_id][:attendants] |
| 37 |
- contacts -= [kick] |
|
| 37 |
+ contacts -= [kick.to_s] |
|
| 38 | 38 |
|
| 39 | 39 |
if contacts.empty? |
| 40 |
- destroy_multichat(client.jid.strip.to_s, chat_id) |
|
| 40 |
+ destroy_multichat(client.jid, chat_id) |
|
| 41 | 41 |
else |
| 42 | 42 |
contacts.each do |contact| |
| 43 |
- client.send(MessageBuilder::send_multichat_contacts(client.jid.strip.to_s, contact, chat_id, contacts)) |
|
| 43 |
+ client.send(MessageBuilder::send_multichat_contacts(client.jid.to_s, contact, chat_id, contacts)) |
|
| 44 | 44 |
end |
| 45 | 45 |
|
| 46 |
- sync_contacts_frontend('', client.jid.strip.to_s, chat_id, contacts)
|
|
| 46 |
+ sync_contacts_frontend(client.jid, client.jid, chat_id, contacts) |
|
| 47 | 47 |
end |
| 48 | 48 |
end |
| 49 | 49 |
end |
| 50 | 50 |
|
| 51 |
- def sync_contacts_frontend(from, to, chat_id, contacts) |
|
| 51 |
+ def sync_contacts_frontend(owner, me, chat_id, contacts) |
|
| 52 | 52 |
send_message 'app.chat.updateSyncedContacts', |
| 53 |
- me: to, |
|
| 54 |
- contacts: contacts, |
|
| 55 |
- owner: from, |
|
| 53 |
+ me: me.strip.to_s, |
|
| 54 |
+ contacts: strip_all(contacts), |
|
| 55 |
+ owner: owner.strip.to_s, |
|
| 56 | 56 |
chat_id: chat_id |
| 57 | 57 |
end |
| 58 | 58 |
|
| 59 |
- def destroy_multichat(to, chat_id) |
|
| 60 |
- client = find_client(to) |
|
| 59 |
+ def destroy_multichat(me, chat_id) |
|
| 60 |
+ client = find_client(me.strip.to_s) |
|
| 61 | 61 |
connection_store[:opened_chats][client].delete(chat_id) |
| 62 | 62 |
|
| 63 | 63 |
send_message 'app.chat.destroyMultichat', chat_id: chat_id |
| ... | ... |
@@ -256,7 +256,7 @@ class WsRosterController < WsController |
| 256 | 256 |
end |
| 257 | 257 |
|
| 258 | 258 |
# mozno treba vyhodit cloveka z multichatu, ak som jeho owner |
| 259 |
- #kick_from_all_multichats(roster_item.jid.to_s) |
|
| 259 |
+ kick_from_all_multichats(new_presence.from) |
|
| 260 | 260 |
else |
| 261 | 261 |
status = uniform_presence(new_presence.show) |
| 262 | 262 |
result = {message: new_presence.status.to_s}
|