summaryrefslogtreecommitdiff
path: root/protocols/Steam/src/steam_server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Steam/src/steam_server.cpp')
-rw-r--r--protocols/Steam/src/steam_server.cpp68
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;