... | ... |
@@ -126,6 +126,13 @@ class WsChatController < WsController |
126 | 126 |
client.send(message) |
127 | 127 |
end |
128 | 128 |
|
129 |
+ stripped_me = client.jid.strip.to_s |
|
130 |
+ stripped_to = Jabber::JID.new(message[:to]).strip!.to_s |
|
131 |
+ if User.can_save_conversation(stripped_me, stripped_to, chat_id) |
|
132 |
+ Rails.logger.debug ['saving send message', stripped_me] |
|
133 |
+ History.save_message(stripped_me, stripped_me, message[:message], stripped_to, chat_id) |
|
134 |
+ end |
|
135 |
+ |
|
129 | 136 |
trigger_success message[:message] |
130 | 137 |
else |
131 | 138 |
trigger_failure |
... | ... |
@@ -196,10 +203,18 @@ class WsChatController < WsController |
196 | 196 |
|
197 | 197 |
private |
198 | 198 |
|
199 |
- def process_incoming_message(from, to, body, chat_id = nil) |
|
199 |
+ def process_incoming_message(from, me, body, chat_id = nil) |
|
200 |
+ stripped_me = me.strip.to_s |
|
201 |
+ stripped_from = from.strip.to_s |
|
202 |
+ |
|
203 |
+ if User.can_save_conversation(stripped_me, stripped_from, chat_id) |
|
204 |
+ Rails.logger.debug ['saving received message', stripped_me, chat_id] |
|
205 |
+ History.save_message(stripped_me, stripped_from, body, stripped_from, chat_id) |
|
206 |
+ end |
|
207 |
+ |
|
200 | 208 |
send_message 'app.chat.messageReceived', |
201 | 209 |
from: from.to_s, |
202 |
- to: to.strip.to_s, |
|
210 |
+ to: stripped_me, |
|
203 | 211 |
message: body, |
204 | 212 |
chat_id: chat_id |
205 | 213 |
end |
... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
class User |
2 | 2 |
include Mongoid::Document |
3 | 3 |
|
4 |
- embeds_many :accounts |
|
4 |
+ embeds_many :accounts, cascade_callbacks: true |
|
5 | 5 |
accepts_nested_attributes_for :accounts |
6 | 6 |
|
7 | 7 |
index({ 'accounts.jid' => 1 }) |
... | ... |
@@ -32,18 +32,29 @@ class User |
32 | 32 |
end |
33 | 33 |
|
34 | 34 |
def self.crendentials_for_token(token) |
35 |
+ user = find_by_token(token) |
|
36 |
+ return user ? user.accounts : [] |
|
37 |
+ end |
|
38 |
+ |
|
39 |
+ def self.find_by_token(token) |
|
35 | 40 |
found = Token.where(token: token).only(:user_id).limit(1).first |
41 |
+ |
|
36 | 42 |
if found |
37 |
- user_id = found.user_id |
|
43 |
+ return find(found.user_id) |
|
38 | 44 |
else |
39 |
- return [] |
|
45 |
+ return nil |
|
40 | 46 |
end |
41 |
- |
|
42 |
- user = where(id: user_id).only(:accounts).first |
|
43 |
- return user ? user.accounts : [] |
|
44 | 47 |
end |
45 | 48 |
|
46 | 49 |
def self.can_save_conversation(my_jid, friend_jid, chat_id = nil) |
50 |
+ if chat_id.blank? |
|
51 |
+ found = User.where('accounts.jid' => my_jid) |
|
52 |
+ .elem_match('accounts.conversation_settings' => {jid: friend_jid, value: 0}) |
|
53 |
+ else |
|
54 |
+ found = User.where('accounts.jid' => my_jid) |
|
55 |
+ .elem_match('accounts.conversation_settings' => {chat_id: chat_id, value: 0}) |
|
56 |
+ end |
|
47 | 57 |
|
58 |
+ found.first.nil? |
|
48 | 59 |
end |
49 | 60 |
end |
50 | 61 |
\ No newline at end of file |