diff options
Diffstat (limited to 'protocols/Steam/src/steam_server.cpp')
| -rw-r--r-- | protocols/Steam/src/steam_server.cpp | 68 | 
1 files changed, 18 insertions, 50 deletions
diff --git a/protocols/Steam/src/steam_server.cpp b/protocols/Steam/src/steam_server.cpp index f7330dbc49..061c2ec6c2 100644 --- a/protocols/Steam/src/steam_server.cpp +++ b/protocols/Steam/src/steam_server.cpp @@ -17,55 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.  #include "stdafx.h" -void CSteamProto::SendFriendMessage(uint32_t msgId, int64_t steamId, const char *pszMessage) -{ -	CMStringA szId(FORMAT, "%d", msgId); - -	CFriendMessagesSendMessageRequest request; -	request.chat_entry_type = (int)EChatEntryType::ChatMsg; request.has_chat_entry_type = true; -	request.client_message_id = szId.GetBuffer(); -	request.contains_bbcode = request.has_contains_bbcode = true; -	request.steamid = steamId; request.has_steamid = true; -	request.message = (char *)pszMessage; -	 -	auto iSourceId = WSSendService(FriendSendMessage, request); -	mir_cslock lck(m_csOwnMessages); -	if (COwnMessage *pOwn = m_arOwnMessages.find((COwnMessage *)&msgId)) -		pOwn->iSourceId = iSourceId; -} - -void CSteamProto::OnMessageSent(const CFriendMessagesSendMessageResponse &reply, const CMsgProtoBufHeader &hdr) -{ -	COwnMessage tmp(0, 0); -	{ -		mir_cslock lck(m_csOwnMessages); -		for (auto &it : m_arOwnMessages) -			if (it->iSourceId == hdr.jobid_target) { -				tmp = *it; -				m_arOwnMessages.remove(m_arOwnMessages.indexOf(&it)); -				break; -			} -	} - -	if (!tmp.hContact) -		return; - -	if (hdr.failed()) { -		CMStringW wszMessage(FORMAT, TranslateT("Message sending has failed with error %d"), hdr.eresult); -		ProtoBroadcastAck(tmp.hContact, ACKTYPE_MESSAGE, ACKRESULT_FAILED, (HANDLE)tmp.iMessageId, (LPARAM)wszMessage.c_str()); -	} -	else { -		uint32_t timestamp = (reply.has_server_timestamp) ? reply.server_timestamp : 0; -		if (timestamp > getDword(tmp.hContact, DB_KEY_LASTMSGTS)) -			setDword(tmp.hContact, DB_KEY_LASTMSGTS, timestamp); - -		tmp.timestamp = timestamp; -		ProtoBroadcastAck(tmp.hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, (HANDLE)tmp.iMessageId, 0); -	} -} - -///////////////////////////////////////////////////////////////////////////////////////// -  void CSteamProto::OnGotNotification(const CSteamNotificationNotificationsReceivedNotification &reply, const CMsgProtoBufHeader &hdr)  {  	if (hdr.eresult != 1) @@ -81,15 +32,32 @@ void CSteamProto::OnGotNotification(const CSteamNotificationNotificationsReceive  ///////////////////////////////////////////////////////////////////////////////////////// +void CSteamProto::SendPersonaStatus(int status) +{ +	CMsgClientChangeStatus request; +	request.persona_state = (int)MirandaToSteamState(status); request.has_persona_state = true; +	WSSend(EMsg::ClientChangeStatus, request); +} + +///////////////////////////////////////////////////////////////////////////////////////// +  void CSteamProto::SendFriendActiveSessions()  {  	CFriendsMessagesGetActiveMessageSessionsRequest request; -	request.has_only_sessions_with_messages = request.only_sessions_with_messages = true; +	request.has_lastmessage_since = true; +	request.has_only_sessions_with_messages = false; request.only_sessions_with_messages = true;  	WSSendService(FriendGetActiveSessions, request);  }  ///////////////////////////////////////////////////////////////////////////////////////// +void CSteamProto::SendUserInfoRequest(uint64_t id, bool bRetrieveState) +{ +	std::vector<uint64_t> ids; +	ids.push_back(id & 0xFFFFFFFFll); +	SendUserInfoRequest(ids, bRetrieveState); +} +  void CSteamProto::SendUserInfoRequest(const std::vector<uint64_t> &ids, bool bRetrieveState)  {  	CMsgClientRequestFriendData request;  | 
