From cdde7a98ea50cfb2c7330cd2424afb071084d21c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20P=C3=B6sel?= Date: Mon, 21 Apr 2014 14:50:41 +0000 Subject: Facebook: Experimental support for receiving typing notifications for multi chats for more users at once I don't know if it will work from Facebook side though. And stopped typing isn't ideal in this case. git-svn-id: http://svn.miranda-ng.org/main/trunk@9011 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/FacebookRM/src/entities.h | 1 + protocols/FacebookRM/src/json.cpp | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'protocols') 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 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); -- cgit v1.2.3