summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2024-06-10 18:06:06 +0300
committerGeorge Hazan <george.hazan@gmail.com>2024-06-10 18:06:06 +0300
commitc6ddfffd7349b10926bd013d113014a9ca7c4374 (patch)
tree9134640d7c0a3b6a2f20e33c0ad85b4fa6c94e62
parentff17d13ff535d20c1a1cf6226fefd29e07f40cdd (diff)
Skype: fix for contact's deletion
-rw-r--r--protocols/SkypeWeb/src/requests/contacts.h6
-rw-r--r--protocols/SkypeWeb/src/skype_contacts.cpp8
-rw-r--r--protocols/SkypeWeb/src/skype_proto.cpp2
3 files changed, 9 insertions, 7 deletions
diff --git a/protocols/SkypeWeb/src/requests/contacts.h b/protocols/SkypeWeb/src/requests/contacts.h
index 43371d15e9..ea572296f4 100644
--- a/protocols/SkypeWeb/src/requests/contacts.h
+++ b/protocols/SkypeWeb/src/requests/contacts.h
@@ -55,9 +55,11 @@ struct AddContactRequest : public AsyncHttpRequest
struct DeleteContactRequest : public AsyncHttpRequest
{
- DeleteContactRequest(const char *who) :
- AsyncHttpRequest(REQUEST_DELETE, HOST_CONTACTS, "/users/SELF/contacts/" + mir_urlEncode(who))
+ DeleteContactRequest(CSkypeProto *ppro, const char *who) :
+ AsyncHttpRequest(REQUEST_DELETE, HOST_CONTACTS)
{
+ m_szUrl.AppendFormat("/users/%s/contacts/%s", ppro->m_szMyname.c_str(), who);
+
AddHeader("Accept", "application/json");
}
};
diff --git a/protocols/SkypeWeb/src/skype_contacts.cpp b/protocols/SkypeWeb/src/skype_contacts.cpp
index bacd557e41..3797ff66fd 100644
--- a/protocols/SkypeWeb/src/skype_contacts.cpp
+++ b/protocols/SkypeWeb/src/skype_contacts.cpp
@@ -221,13 +221,13 @@ INT_PTR CSkypeProto::OnGrantAuth(WPARAM hContact, LPARAM)
return 0;
}
-bool CSkypeProto::OnContactDeleted(MCONTACT hContact, uint32_t)
+bool CSkypeProto::OnContactDeleted(MCONTACT hContact, uint32_t flags)
{
- if (IsOnline() && hContact) {
+ if (IsOnline() && hContact && (flags & CDF_DEL_CONTACT)) {
if (isChatRoom(hContact))
- PushRequest(new DestroyChatroomRequest(getMStringA(hContact, SKYPE_SETTINGS_ID)));
+ PushRequest(new DestroyChatroomRequest(getId(hContact)));
else
- PushRequest(new DeleteContactRequest(getId(hContact)));
+ PushRequest(new DeleteContactRequest(this, getId(hContact)));
}
return true;
}
diff --git a/protocols/SkypeWeb/src/skype_proto.cpp b/protocols/SkypeWeb/src/skype_proto.cpp
index 4b9ae8b421..5b1cf49f3e 100644
--- a/protocols/SkypeWeb/src/skype_proto.cpp
+++ b/protocols/SkypeWeb/src/skype_proto.cpp
@@ -103,7 +103,7 @@ INT_PTR CSkypeProto::GetCaps(int type, MCONTACT)
{
switch (type) {
case PFLAGNUM_1:
- return PF1_IM | PF1_AUTHREQ | PF1_CHAT | PF1_BASICSEARCH | PF1_MODEMSG | PF1_FILE;
+ return PF1_IM | PF1_AUTHREQ | PF1_CHAT | PF1_BASICSEARCH | PF1_MODEMSG | PF1_FILE | PF1_SERVERCLIST;
case PFLAGNUM_2:
return PF2_ONLINE | PF2_INVISIBLE | PF2_SHORTAWAY | PF2_HEAVYDND;
case PFLAGNUM_3: