diff options
-rw-r--r-- | protocols/FacebookRM/src/entities.h | 1 | ||||
-rw-r--r-- | protocols/FacebookRM/src/json.cpp | 15 |
2 files changed, 12 insertions, 4 deletions
diff --git a/protocols/FacebookRM/src/entities.h b/protocols/FacebookRM/src/entities.h index f9a8283e36..a82b0843bb 100644 --- a/protocols/FacebookRM/src/entities.h +++ b/protocols/FacebookRM/src/entities.h @@ -91,6 +91,7 @@ struct facebook_chatroom std::map<std::string, std::string> participants;
std::string message_readers;
+ std::string message_typers;
DWORD last_active;
};
diff --git a/protocols/FacebookRM/src/json.cpp b/protocols/FacebookRM/src/json.cpp index 743d2380bd..df58d2d5f3 100644 --- a/protocols/FacebookRM/src/json.cpp +++ b/protocols/FacebookRM/src/json.cpp @@ -639,14 +639,21 @@ int facebook_json_parser::parse_messages(void* data, std::vector< facebook_messa participant = chatroom->second.participants.find(from_id);
if (participant != chatroom->second.participants.end()) {
MCONTACT hChatContact = proto->ChatIDToHContact(tid);
- ptrT name(mir_utf8decodeT(participant->second.c_str()));
+
+ if (!chatroom->second.message_typers.empty())
+ chatroom->second.message_typers += ", ";
+ chatroom->second.message_typers += participant->second.c_str();
+
+ ptrT typers(mir_utf8decodeT(chatroom->second.message_typers.c_str()));
TCHAR tstr[200];
- if (json_as_int(st_) == 1)
- mir_sntprintf(tstr, SIZEOF(tstr), TranslateT("%s is typing a message..."), name);
- else
+ if (json_as_int(st_) == 1) {
+ mir_sntprintf(tstr, SIZEOF(tstr), TranslateT("%s is typing a message..."), typers);
+ } else {
+ chatroom->second.message_typers = "";
mir_sntprintf(tstr, SIZEOF(tstr), _T(""));
+ }
// TODO: support proper MS_PROTO_CONTACTISTYPING service for chatrooms (when it will be implemented)
CallService(MS_MSG_SETSTATUSTEXT, (WPARAM)hChatContact, (LPARAM)tstr);
|