summaryrefslogtreecommitdiff
path: root/protocols
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2019-12-09 20:15:18 +0300
committerGeorge Hazan <ghazan@miranda.im>2019-12-09 20:15:18 +0300
commit7f3f779d66c013ae106d005c97c7a4861d660235 (patch)
tree72ad40ae6da66462f9413271df50ce8f3b01a2e1 /protocols
parent0a4cd22b70ac012d74c7df64d29cbe8afbc17e40 (diff)
fixes #2137 (ICQ-WIM: no need to remove contacts marked as 'deleted')
Diffstat (limited to 'protocols')
-rw-r--r--protocols/ICQ-WIM/src/poll.cpp9
-rw-r--r--protocols/ICQ-WIM/src/proto.cpp9
-rw-r--r--protocols/ICQ-WIM/src/server.cpp9
3 files changed, 13 insertions, 14 deletions
diff --git a/protocols/ICQ-WIM/src/poll.cpp b/protocols/ICQ-WIM/src/poll.cpp
index 477e3432bc..d6ab5ae19d 100644
--- a/protocols/ICQ-WIM/src/poll.cpp
+++ b/protocols/ICQ-WIM/src/poll.cpp
@@ -112,15 +112,8 @@ void CIcqProto::ProcessDiff(const JSONNode &ev)
if (hContact == INVALID_CONTACT_ID)
continue;
- if (bDeleted) {
- if (processed[hContact])
- continue;
-
- // prepare contact for deletion
- Clist_SetGroup(hContact, nullptr);
- Contact_RemoveFromList(hContact);
+ if (bDeleted)
continue;
- }
processed[hContact] = true;
setWString(hContact, "IcqGroup", pGroup->wszName);
diff --git a/protocols/ICQ-WIM/src/proto.cpp b/protocols/ICQ-WIM/src/proto.cpp
index 3e41302dd5..1d70e7a59f 100644
--- a/protocols/ICQ-WIM/src/proto.cpp
+++ b/protocols/ICQ-WIM/src/proto.cpp
@@ -176,11 +176,14 @@ INT_PTR CIcqProto::UploadGroups(WPARAM, LPARAM)
if (isChatRoom(it))
continue;
- CMStringW wszIcqGroup(getMStringW(it, "IcqGroup"));
+ ptrW wszIcqGroup(getWStringA(it, "IcqGroup"));
+ if (wszIcqGroup == nullptr)
+ continue;
+
ptrW wszMirGroup(Clist_GetGroup(it));
if (!wszMirGroup)
wszMirGroup = mir_wstrdup(L"General");
- if (wszIcqGroup != wszMirGroup)
+ if (mir_wstrcmp(wszIcqGroup, wszMirGroup))
MoveContactToGroup(it, wszIcqGroup, wszMirGroup);
}
return 0;
@@ -357,7 +360,7 @@ int CIcqProto::OnGroupChange(WPARAM hContact, LPARAM lParam)
<< AIMSID(this) << GROUP_PARAM("oldGroup", pParam->pszOldName) << GROUP_PARAM("newGroup", pParam->pszNewName));
}
}
- else MoveContactToGroup(hContact, getMStringW(hContact, "IcqGroup"), pParam->pszNewName);
+ else MoveContactToGroup(hContact, ptrW(getWStringA(hContact, "IcqGroup")), pParam->pszNewName);
return 0;
}
diff --git a/protocols/ICQ-WIM/src/server.cpp b/protocols/ICQ-WIM/src/server.cpp
index c23b9d6ef9..44cfa13278 100644
--- a/protocols/ICQ-WIM/src/server.cpp
+++ b/protocols/ICQ-WIM/src/server.cpp
@@ -169,9 +169,12 @@ void CIcqProto::ConnectionFailed(int iReason, int iErrorCode)
void CIcqProto::MoveContactToGroup(MCONTACT hContact, const wchar_t *pwszGroup, const wchar_t *pwszNewGroup)
{
- auto *pReq = new AsyncHttpRequest(CONN_MAIN, REQUEST_GET, ICQ_API_SERVER "/buddylist/moveBuddy") << AIMSID(this) << WCHAR_PARAM("buddy", GetUserId(hContact));
- if (mir_wstrlen(pwszGroup))
- pReq << GROUP_PARAM("group", pwszGroup);
+ // otherwise we'll get a server error
+ if (!mir_wstrlen(pwszGroup))
+ return;
+
+ auto *pReq = new AsyncHttpRequest(CONN_MAIN, REQUEST_GET, ICQ_API_SERVER "/buddylist/moveBuddy") << AIMSID(this) << WCHAR_PARAM("buddy", GetUserId(hContact))
+ << GROUP_PARAM("group", pwszGroup);
if (mir_wstrlen(pwszNewGroup))
pReq << GROUP_PARAM("newGroup", pwszNewGroup);
Push(pReq);