From 665523e47db8de970c37f4dc9b1d18aba59bca2a Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 11 Jun 2024 15:53:58 +0300 Subject: Skype: PS_EMPTY_SRV_HISTORY implementation --- protocols/SkypeWeb/src/requests/history.h | 14 ++++++++++---- protocols/SkypeWeb/src/skype_history_sync.cpp | 12 +++++++++++- protocols/SkypeWeb/src/skype_proto.cpp | 4 +++- protocols/SkypeWeb/src/skype_proto.h | 3 ++- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/protocols/SkypeWeb/src/requests/history.h b/protocols/SkypeWeb/src/requests/history.h index aede248d32..ecd3fbcb65 100644 --- a/protocols/SkypeWeb/src/requests/history.h +++ b/protocols/SkypeWeb/src/requests/history.h @@ -35,11 +35,9 @@ struct SyncHistoryFirstRequest : public AsyncHttpRequest struct GetHistoryRequest : public AsyncHttpRequest { - GetHistoryRequest(const char *username, int pageSize, uint32_t timestamp, bool bOperative) : - AsyncHttpRequest(REQUEST_GET, HOST_DEFAULT, 0, &CSkypeProto::OnGetServerHistory) + GetHistoryRequest(const char *who, int pageSize, uint32_t timestamp, bool bOperative) : + AsyncHttpRequest(REQUEST_GET, HOST_DEFAULT, "/users/ME/conversations/" + mir_urlEncode(who) + "/messages", &CSkypeProto::OnGetServerHistory) { - m_szUrl.AppendFormat("/users/ME/conversations/%s/messages", mir_urlEncode(username).c_str()); - if (bOperative) pUserInfo = this; @@ -54,4 +52,12 @@ struct GetHistoryRequest : public AsyncHttpRequest } }; +struct EmptyHistoryRequest : public AsyncHttpRequest +{ + EmptyHistoryRequest(const char *who) : + AsyncHttpRequest(REQUEST_DELETE, HOST_DEFAULT, "/users/ME/conversations/" + mir_urlEncode(who) + "/messages") + { + } +}; + #endif //_SKYPE_REQUEST_HISTORY_H_ diff --git a/protocols/SkypeWeb/src/skype_history_sync.cpp b/protocols/SkypeWeb/src/skype_history_sync.cpp index 44e8f5f23c..7c5092c0b3 100644 --- a/protocols/SkypeWeb/src/skype_history_sync.cpp +++ b/protocols/SkypeWeb/src/skype_history_sync.cpp @@ -134,7 +134,7 @@ void CSkypeProto::ReadHistoryRest(const char *szUrl) PushRequest(new SyncHistoryFirstRequest(p+ g_plugin.szDefaultServer.GetLength()+3)); } -INT_PTR CSkypeProto::GetContactHistory(WPARAM hContact, LPARAM) +INT_PTR CSkypeProto::SvcLoadHistory(WPARAM hContact, LPARAM) { PushRequest(new GetHistoryRequest(getId(hContact), 100, 0, false)); return 0; @@ -178,3 +178,13 @@ void CSkypeProto::OnSyncHistory(MHttpResponse *response, AsyncHttpRequest*) m_bHistorySynced = true; } + +////////////////////////////////////////////////////////////////////////////////////////// + +INT_PTR CSkypeProto::SvcEmptyHistory(WPARAM hContact, LPARAM flags) +{ + if (flags & CDF_DEL_HISTORY) { + PushRequest(new EmptyHistoryRequest(getId(hContact))); + } + return 0; +} diff --git a/protocols/SkypeWeb/src/skype_proto.cpp b/protocols/SkypeWeb/src/skype_proto.cpp index 5b1cf49f3e..df6ea85f2c 100644 --- a/protocols/SkypeWeb/src/skype_proto.cpp +++ b/protocols/SkypeWeb/src/skype_proto.cpp @@ -45,7 +45,9 @@ CSkypeProto::CSkypeProto(const char* protoName, const wchar_t* userName) : CreateProtoService(PS_MENU_REQAUTH, &CSkypeProto::OnRequestAuth); CreateProtoService(PS_MENU_GRANTAUTH, &CSkypeProto::OnGrantAuth); - CreateProtoService(PS_MENU_LOADHISTORY, &CSkypeProto::GetContactHistory); + + CreateProtoService(PS_MENU_LOADHISTORY, &CSkypeProto::SvcLoadHistory); + CreateProtoService(PS_EMPTY_SRV_HISTORY, &CSkypeProto::SvcEmptyHistory); HookProtoEvent(ME_OPT_INITIALISE, &CSkypeProto::OnOptionsInit); diff --git a/protocols/SkypeWeb/src/skype_proto.h b/protocols/SkypeWeb/src/skype_proto.h index a5973d5c34..f6fa6faf31 100644 --- a/protocols/SkypeWeb/src/skype_proto.h +++ b/protocols/SkypeWeb/src/skype_proto.h @@ -339,7 +339,8 @@ private: INT_PTR __cdecl UnblockContact(WPARAM hContact, LPARAM); INT_PTR __cdecl OnRequestAuth(WPARAM hContact, LPARAM lParam); INT_PTR __cdecl OnGrantAuth(WPARAM hContact, LPARAM); - INT_PTR __cdecl GetContactHistory(WPARAM hContact, LPARAM lParam); + INT_PTR __cdecl SvcLoadHistory(WPARAM hContact, LPARAM lParam); + INT_PTR __cdecl SvcEmptyHistory(WPARAM hContact, LPARAM lParam); INT_PTR __cdecl SvcCreateChat(WPARAM, LPARAM); INT_PTR __cdecl ParseSkypeUriService(WPARAM, LPARAM lParam); -- cgit v1.2.3