diff options
| author | George Hazan <george.hazan@gmail.com> | 2024-12-17 23:24:44 +0300 |
|---|---|---|
| committer | George Hazan <george.hazan@gmail.com> | 2024-12-17 23:24:44 +0300 |
| commit | 4c3d77032316bc8814cddc00d020ba00d4533999 (patch) | |
| tree | 1862e30966a69bf94a7288b95baed5b04a040d80 /protocols/Steam/src/steam_server.cpp | |
| parent | 4b5082aef3817173bc254755c0ec352da064a440 (diff) | |
Steam:
- contact statuses are back;
- contact info is back too;
- Miranda's account status is passed to the server;
- some old code removed;
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; |
