diff options
author | George Hazan <ghazan@miranda.im> | 2019-12-09 20:15:18 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2019-12-09 20:15:18 +0300 |
commit | 7f3f779d66c013ae106d005c97c7a4861d660235 (patch) | |
tree | 72ad40ae6da66462f9413271df50ce8f3b01a2e1 /protocols | |
parent | 0a4cd22b70ac012d74c7df64d29cbe8afbc17e40 (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.cpp | 9 | ||||
-rw-r--r-- | protocols/ICQ-WIM/src/proto.cpp | 9 | ||||
-rw-r--r-- | protocols/ICQ-WIM/src/server.cpp | 9 |
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); |