diff options
author | George Hazan <ghazan@miranda.im> | 2023-01-25 18:34:51 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2023-01-25 18:34:51 +0300 |
commit | 9885bf54f788e831a80c76001340aa68d31d2aaa (patch) | |
tree | 420ab4aa5bf868d4193c965668ae68e5855093b7 /protocols | |
parent | c9d99d1525e2e9374ed0fa10837e82e76c3b9216 (diff) |
Group chats: ChatRoomID setting replaced with real protocol id
Diffstat (limited to 'protocols')
34 files changed, 171 insertions, 207 deletions
diff --git a/protocols/CloudFile/src/utils.cpp b/protocols/CloudFile/src/utils.cpp index 5de7ebdee9..69a5c74a60 100644 --- a/protocols/CloudFile/src/utils.cpp +++ b/protocols/CloudFile/src/utils.cpp @@ -67,7 +67,7 @@ void SendToContact(MCONTACT hContact, const wchar_t *data) { const char *szProto = Proto_GetBaseAccountName(hContact); if (Contact::IsGroupChat(hContact, szProto)) { - ptrW tszChatRoom(db_get_wsa(hContact, szProto, "ChatRoomID")); + ptrW tszChatRoom(Contact::GetInfo(CNF_UNIQUEID, hContact, szProto)); Chat_SendUserMessage(szProto, tszChatRoom, data); return; } diff --git a/protocols/Facebook/src/server.cpp b/protocols/Facebook/src/server.cpp index 39ba67f83d..e3d1f31736 100644 --- a/protocols/Facebook/src/server.cpp +++ b/protocols/Facebook/src/server.cpp @@ -279,7 +279,6 @@ FacebookUser* FacebookProto::RefreshThread(JSONNode &n) if (si == nullptr)
return nullptr;
- setWString(si->hContact, DBKEY_ID, chatId);
Chat_AddGroup(si, TranslateT("Participant"));
for (auto &u : n["all_participants"]["nodes"]) {
diff --git a/protocols/Gadu-Gadu/src/core.cpp b/protocols/Gadu-Gadu/src/core.cpp index f1daddfbd4..6a0698e1cf 100644 --- a/protocols/Gadu-Gadu/src/core.cpp +++ b/protocols/Gadu-Gadu/src/core.cpp @@ -1210,14 +1210,14 @@ void GaduProto::broadcastnewstatus(int newStatus) void GaduProto::OnContactDeleted(MCONTACT hContact)
{
- uin_t uin = (uin_t)getDword(hContact, GG_KEY_UIN, 0);
+ uin_t uin = (uin_t)getDword(hContact, GG_KEY_UIN);
// Terminate conference if contact is deleted
- ptrW wszRoomId(getWStringA(hContact, "ChatRoomID"));
- if (isChatRoom(hContact) && wszRoomId != NULL && gc_enabled)
+ if (isChatRoom(hContact) && uin && gc_enabled)
{
+ CMStringW wszRoomId(FORMAT, L"%d", uin);
GGGC *chat = gc_lookup(wszRoomId);
- debugLogA("contactdeleted(): Terminating chat %x, id %s from contact list...", chat, wszRoomId.get());
+ debugLogA("contactdeleted(): Terminating chat %x, id %s from contact list...", chat, wszRoomId.c_str());
if (chat)
{
// Destroy chat entry
@@ -1279,20 +1279,20 @@ int GaduProto::dbsettingchanged(WPARAM hContact, LPARAM lParam) return 0;
// Groupchat window contact is being renamed
- DBVARIANT dbv;
- if (isChatRoom(hContact) && !getWString(hContact, "ChatRoomID", &dbv))
+ if (isChatRoom(hContact))
{
+ CMStringW wszId(FORMAT, L"%d", getDword(hContact, GG_KEY_UIN));
+
// Most important... check redundancy (fucking cascading)
static int cascade = 0;
- if (!cascade && dbv.pwszVal)
+ if (!cascade)
{
- debugLogA("dbsettingchanged(): Conference %s was renamed.", dbv.pszVal);
+ debugLogA("dbsettingchanged(): Conference %s was renamed.", wszId.c_str());
// Mark cascading
/* FIXME */ cascade = 1;
- Chat_ChangeSessionName(m_szModuleName, dbv.pwszVal, ptszVal);
+ Chat_ChangeSessionName(m_szModuleName, wszId, ptszVal);
/* FIXME */ cascade = 0;
}
- db_free(&dbv);
}
else {
// Change contact name on all chats
diff --git a/protocols/Gadu-Gadu/src/gg.cpp b/protocols/Gadu-Gadu/src/gg.cpp index 34b7e1b8fa..fd0aea0f03 100644 --- a/protocols/Gadu-Gadu/src/gg.cpp +++ b/protocols/Gadu-Gadu/src/gg.cpp @@ -48,7 +48,7 @@ CMPlugin::CMPlugin() : ACCPROTOPLUGIN<GaduProto>(GGDEF_PROTO, pluginInfoEx)
{
crc_gentable();
- SetUniqueId(GG_KEY_UIN);
+ SetUniqueId(GG_KEY_UIN, DBVT_DWORD);
}
//////////////////////////////////////////////////////////
diff --git a/protocols/Gadu-Gadu/src/groupchat.cpp b/protocols/Gadu-Gadu/src/groupchat.cpp index 6eac366e71..81deec7393 100644 --- a/protocols/Gadu-Gadu/src/groupchat.cpp +++ b/protocols/Gadu-Gadu/src/groupchat.cpp @@ -114,7 +114,7 @@ int GaduProto::gc_event(WPARAM, LPARAM lParam) // Check if we got our protocol, and fields are set
if (!gch || !gch->si->ptszID || !gch->si->pszModule
|| mir_strcmpi(gch->si->pszModule, m_szModuleName)
- || !(uin = getDword(GG_KEY_UIN, 0))
+ || !(uin = getDword(gch->si->hContact, GG_KEY_UIN))
|| !(chat = gc_lookup(gch->si->ptszID)))
return 0;
@@ -126,16 +126,7 @@ int GaduProto::gc_event(WPARAM, LPARAM lParam) list_remove(&chats, chat, 1);
// Remove contact from contact list (duh!) should be done by chat.dll !!
- for (MCONTACT hContact = db_find_first(); hContact; ) {
- MCONTACT hNext = db_find_next(hContact);
- DBVARIANT dbv;
- if (!getWString(hContact, "ChatRoomID", &dbv)) {
- if (dbv.pwszVal && !mir_wstrcmp(gch->si->ptszID, dbv.pwszVal))
- db_delete_contact(hContact);
- db_free(&dbv);
- }
- hContact = hNext;
- }
+ db_delete_contact(gch->si->hContact);
return 1;
}
diff --git a/protocols/ICQ-WIM/src/server.cpp b/protocols/ICQ-WIM/src/server.cpp index ce3dad53bb..e7468d952a 100644 --- a/protocols/ICQ-WIM/src/server.cpp +++ b/protocols/ICQ-WIM/src/server.cpp @@ -491,7 +491,7 @@ void CIcqProto::ParseMessage(MCONTACT hContact, __int64 &lastMsgId, const JSONNo CheckOwnMessage(reqId, szMsgId, true);
CMStringW wszSender(it["chat"]["sender"].as_mstring());
- CMStringW wszChatId(getMStringW(hContact, "ChatRoomID"));
+ CMStringW wszChatId(GetUserId(hContact));
if (bIsFileTransfer) {
wszText = pFileInfo->szUrl;
diff --git a/protocols/ICQ-WIM/src/utils.cpp b/protocols/ICQ-WIM/src/utils.cpp index 9a2e0b35ef..6bfc868e96 100644 --- a/protocols/ICQ-WIM/src/utils.cpp +++ b/protocols/ICQ-WIM/src/utils.cpp @@ -265,9 +265,6 @@ INT_PTR __cdecl CIcqProto::SetAvatar(WPARAM, LPARAM lParam) CMStringW CIcqProto::GetUserId(MCONTACT hContact)
{
- if (isChatRoom(hContact))
- return getMStringW(hContact, "ChatRoomID");
-
return getMStringW(hContact, DB_KEY_ID);
}
diff --git a/protocols/IRCG/src/ircproto.cpp b/protocols/IRCG/src/ircproto.cpp index e64a3b420e..95b233d8dc 100644 --- a/protocols/IRCG/src/ircproto.cpp +++ b/protocols/IRCG/src/ircproto.cpp @@ -195,7 +195,7 @@ void CIrcProto::OnModulesLoaded() ptrA szNetwork(getStringA("Network"));
if (szNetwork) {
- CMStringA szSetting(FORMAT, "PERFORM:%s", szNetwork);
+ CMStringA szSetting(FORMAT, "PERFORM:%s", szNetwork.get());
szSetting.MakeUpper();
CMStringW wszValue(getMStringW(szSetting));
@@ -206,18 +206,6 @@ void CIrcProto::OnModulesLoaded() delSetting("Network");
}
- if (getByte("CompatibilityLevel") < 1) {
- for (auto &cc : AccContacts()) {
- CMStringW chatId(getMStringW(cc, "ChatRoomID"));
- int idx = chatId.Find(L" - ");
- if (idx != -1) {
- chatId.Truncate(idx);
- setWString(cc, "ChatRoomID", chatId);
- }
- }
- setByte("CompatibilityLevel", 1);
- }
-
InitIgnore();
HookProtoEvent(ME_USERINFO_INITIALISE, &CIrcProto::OnInitUserInfo);
diff --git a/protocols/JabberG/src/jabber_api.cpp b/protocols/JabberG/src/jabber_api.cpp index 738e1bb439..775102599e 100644 --- a/protocols/JabberG/src/jabber_api.cpp +++ b/protocols/JabberG/src/jabber_api.cpp @@ -57,7 +57,7 @@ MCONTACT CJabberProto::ContactFromJID(const char *jid) char* CJabberProto::ContactToJID(MCONTACT hContact)
{
- return getUStringA(hContact, isChatRoom(hContact) ? "ChatRoomID" : "jid");
+ return getUStringA(hContact, "jid");
}
char* CJabberProto::GetBestResourceName(const char *jid)
diff --git a/protocols/JabberG/src/jabber_groupchat.cpp b/protocols/JabberG/src/jabber_groupchat.cpp index f4f3e6c008..719144a127 100644 --- a/protocols/JabberG/src/jabber_groupchat.cpp +++ b/protocols/JabberG/src/jabber_groupchat.cpp @@ -186,7 +186,7 @@ INT_PTR __cdecl CJabberProto::OnMenuHandleJoinGroupchat(WPARAM, LPARAM) INT_PTR __cdecl CJabberProto::OnJoinChat(WPARAM hContact, LPARAM)
{
- ptrA jid(getUStringA(hContact, "ChatRoomID"));
+ ptrA jid(ContactToJID(hContact));
if (jid == nullptr)
return 0;
@@ -210,7 +210,7 @@ INT_PTR __cdecl CJabberProto::OnJoinChat(WPARAM hContact, LPARAM) INT_PTR __cdecl CJabberProto::OnLeaveChat(WPARAM hContact, LPARAM)
{
- ptrA jid(getUStringA(hContact, "ChatRoomID"));
+ ptrA jid(ContactToJID(hContact));
if (jid != nullptr) {
if (getWord(hContact, "Status", 0) != ID_STATUS_OFFLINE) {
JABBER_LIST_ITEM *item = ListGetItemPtr(LIST_CHATROOM, jid);
diff --git a/protocols/JabberG/src/jabber_iqid.cpp b/protocols/JabberG/src/jabber_iqid.cpp index 041a2052bf..85e2397829 100644 --- a/protocols/JabberG/src/jabber_iqid.cpp +++ b/protocols/JabberG/src/jabber_iqid.cpp @@ -423,7 +423,7 @@ void CJabberProto::OnIqResultSession(const TiXmlElement*, CJabberIqInfo *pInfo) void CJabberProto::GroupchatJoinByHContact(MCONTACT hContact, bool autojoin)
{
- ptrA roomjid(getUStringA(hContact, "ChatRoomID"));
+ ptrA roomjid(ContactToJID(hContact));
if (roomjid == nullptr)
return;
diff --git a/protocols/JabberG/src/jabber_list.cpp b/protocols/JabberG/src/jabber_list.cpp index 73abe09e2b..da6cfb955d 100644 --- a/protocols/JabberG/src/jabber_list.cpp +++ b/protocols/JabberG/src/jabber_list.cpp @@ -89,16 +89,9 @@ void JABBER_RESOURCE_STATUS::Release() void CJabberProto::ListInit(void)
{
for (auto &hContact : AccContacts()) {
- if (isChatRoom(hContact)) {
- ptrA jid(getUStringA(hContact, "ChatRoomID"));
- if (jid != nullptr)
- ListAdd(LIST_CHATROOM, jid, hContact);
- }
- else {
- ptrA jid(getUStringA(hContact, "jid"));
- if (jid != nullptr)
- ListAdd(LIST_ROSTER, jid, hContact);
- }
+ ptrA jid(ContactToJID(hContact));
+ if (jid != nullptr)
+ ListAdd(isChatRoom(hContact) ? LIST_CHATROOM : LIST_ROSTER, jid, hContact);
}
}
diff --git a/protocols/JabberG/src/jabber_menu.cpp b/protocols/JabberG/src/jabber_menu.cpp index 0d510f6859..715909e915 100644 --- a/protocols/JabberG/src/jabber_menu.cpp +++ b/protocols/JabberG/src/jabber_menu.cpp @@ -282,7 +282,7 @@ int CJabberProto::OnPrebuildContactMenu(WPARAM hContact, LPARAM) Menu_ShowItem(GetMenuItem(PROTO_MENU_LOAD_HISTORY), true);
if (bIsChatRoom) {
- ptrA roomid(getUStringA(hContact, "ChatRoomID"));
+ ptrA roomid(ContactToJID(hContact));
if (ListGetItemPtr(LIST_BOOKMARK, roomid) == nullptr)
if (m_ThreadInfo && m_ThreadInfo->jabberServerCaps & JABBER_CAPS_PRIVATE_STORAGE)
Menu_ShowItem(g_hMenuAddBookmark, true);
@@ -425,7 +425,7 @@ INT_PTR __cdecl CJabberProto::OnMenuBookmarkAdd(WPARAM hContact, LPARAM) if (!hContact)
return 0; // we do not add ourself to the roster. (buggy situation - should not happen)
- ptrA roomID(getUStringA(hContact, "ChatRoomID"));
+ ptrA roomID(ContactToJID(hContact));
if (roomID == nullptr)
return 0;
@@ -922,7 +922,7 @@ INT_PTR __cdecl CJabberProto::OnMenuHandleDirectPresence(WPARAM hContact, LPARAM CMStringA jid;
ptrA szJid(getUStringA(hContact, "jid"));
if (szJid == nullptr) {
- ptrA roomid(getUStringA(hContact, "ChatRoomID"));
+ ptrA roomid(ContactToJID(hContact));
if (roomid == nullptr)
return 0;
diff --git a/protocols/JabberG/src/jabber_util.cpp b/protocols/JabberG/src/jabber_util.cpp index a3e1c856f6..2782aef450 100644 --- a/protocols/JabberG/src/jabber_util.cpp +++ b/protocols/JabberG/src/jabber_util.cpp @@ -570,8 +570,7 @@ char* CJabberProto::GetClientJID(MCONTACT hContact, char *dest, size_t destLen) if (hContact == 0)
return nullptr;
- ptrA jid(getUStringA(hContact, isChatRoom(hContact) ? "ChatRoomID" : "jid"));
- return GetClientJID(jid, dest, destLen);
+ return GetClientJID(ptrA(ContactToJID(hContact)), dest, destLen);
}
char* CJabberProto::GetClientJID(const char *jid, char *dest, size_t destLen)
diff --git a/protocols/MinecraftDynmap/src/chat.cpp b/protocols/MinecraftDynmap/src/chat.cpp index c0c1f80542..b5bd327d24 100644 --- a/protocols/MinecraftDynmap/src/chat.cpp +++ b/protocols/MinecraftDynmap/src/chat.cpp @@ -162,19 +162,6 @@ void MinecraftDynmapProto::ClearChat() // TODO: Could this be done better?
MCONTACT MinecraftDynmapProto::GetChatHandle()
{
- /*if (chatHandle_ != NULL)
- return chatHandle_;
-
- for (auto &hContact : AccContacts()) {
- if (db_get_b(hContact, m_szModuleName, "ChatRoom", 0) > 0) {
- ptrA id = db_get_sa(hContact, m_szModuleName, "ChatRoomId");
- if (id != NULL && !strcmp(id, m_szModuleName))
- return hContact;
- }
- }
-
- return NULL;*/
-
GC_INFO gci = {0};
gci.Flags = GCF_HCONTACT;
gci.pszModule = m_szModuleName;
diff --git a/protocols/Sametime/sametime.vcxproj.filters b/protocols/Sametime/sametime.vcxproj.filters index 4d89fb680e..96d0377694 100644 --- a/protocols/Sametime/sametime.vcxproj.filters +++ b/protocols/Sametime/sametime.vcxproj.filters @@ -8,92 +8,92 @@ <ClCompile Include="src\files.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\channel.c"> + <ClCompile Include="src\messaging.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\cipher.c"> + <ClCompile Include="src\options.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\common.c"> + <ClCompile Include="src\places.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\error.c"> + <ClCompile Include="src\sametime.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\message.c"> + <ClCompile Include="src\sametime_proto.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\mpi\mpi.c"> + <ClCompile Include="src\sametime_session.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\mw_debug.c"> + <ClCompile Include="src\session_announce_win.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\mw_util.c"> + <ClCompile Include="src\stdafx.cxx"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\service.c"> + <ClCompile Include="src\userlist.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\session.c"> + <ClCompile Include="src\utils.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\srvc_aware.c"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\channel.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\srvc_conf.c"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\cipher.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\srvc_dir.c"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\common.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\srvc_ft.c"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\error.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\srvc_im.c"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\message.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\srvc_place.c"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\mpi\mpi.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\srvc_resolve.c"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\mw_debug.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\srvc_store.c"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\mw_util.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\meanwhile\src\st_list.c"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\service.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\messaging.cpp"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\session.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\options.cpp"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\srvc_aware.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\places.cpp"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\srvc_conf.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\sametime.cpp"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\srvc_dir.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\sametime_proto.cpp"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\srvc_ft.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\sametime_session.cpp"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\srvc_im.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\session_announce_win.cpp"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\srvc_resolve.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\stdafx.cxx"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\srvc_place.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\userlist.cpp"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\srvc_store.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> - <ClCompile Include="src\utils.cpp"> - <Filter>Source Files</Filter> + <ClCompile Include="src\meanwhile\src\st_list.c"> + <Filter>Source Files\meanwhile</Filter> </ClCompile> </ItemGroup> <ItemGroup> @@ -121,4 +121,9 @@ <Filter>Resource Files</Filter> </ResourceCompile> </ItemGroup> + <ItemGroup> + <Filter Include="Source Files\meanwhile"> + <UniqueIdentifier>{425f78cf-1344-45bb-89f5-cfe3510ea8ac}</UniqueIdentifier> + </Filter> + </ItemGroup> </Project>
\ No newline at end of file diff --git a/protocols/Sametime/src/conference.cpp b/protocols/Sametime/src/conference.cpp index 27c490c388..6d1783958d 100644 --- a/protocols/Sametime/src/conference.cpp +++ b/protocols/Sametime/src/conference.cpp @@ -323,7 +323,7 @@ int CSametimeProto::ChatDeleted(MCONTACT hContact) { debugLogW(L"CSametimeProto::ChatDeleted() hContact=[%x]", hContact);
DBVARIANT dbv;
- if (!db_get_s(hContact, m_szModuleName, "ChatRoomID", &dbv)) {
+ if (!getUString(hContact, "stid", &dbv)) {
TerminateConference(dbv.pszVal);
db_free(&dbv);
}
@@ -384,7 +384,7 @@ int CSametimeProto::PrebuildContactMenu(WPARAM wParam, LPARAM) // if user is already in our meeting,
bool not_present = true;
DBVARIANT dbv;
- if (my_conference && !db_get_utf(hContact, m_szModuleName, "stid", &dbv)) {
+ if (my_conference && !getUString(hContact, "stid", &dbv)) {
char* user_id = dbv.pszVal;
GList *members, *mem;
diff --git a/protocols/Sametime/src/options.cpp b/protocols/Sametime/src/options.cpp index e96404360a..d34b6b5505 100644 --- a/protocols/Sametime/src/options.cpp +++ b/protocols/Sametime/src/options.cpp @@ -350,15 +350,15 @@ void CSametimeProto::LoadOptions() {
DBVARIANT dbv;
- if (!db_get_utf(0, m_szModuleName, "ServerName", &dbv)) {
+ if (!getUString(0, "ServerName", &dbv)) {
strncpy(options.server_name, dbv.pszVal, LSTRINGLEN);
db_free(&dbv);
}
- if (!db_get_utf(0, m_szModuleName, "stid", &dbv)) {
+ if (!getUString(0, "stid", &dbv)) {
strncpy(options.id, dbv.pszVal, LSTRINGLEN);
db_free(&dbv);
}
- if (!db_get_utf(0, m_szModuleName, "Password", &dbv)) {
+ if (!getUString(0, "Password", &dbv)) {
strncpy(options.pword, dbv.pszVal, LSTRINGLEN);
db_free(&dbv);
}
@@ -398,20 +398,19 @@ void CSametimeProto::LoadOptions() void CSametimeProto::SaveOptions()
{
- db_set_utf(0, m_szModuleName, "ServerName", options.server_name);
-
- db_set_utf(0, m_szModuleName, "stid", options.id);
- //db_set_s(0, m_szModuleName, "Nick", options.id);
- db_set_utf(0, m_szModuleName, "Password", options.pword);
-
- db_set_dw(0, m_szModuleName, "ServerPort", options.port);
- db_set_b(0, m_szModuleName, "GetServerContacts", options.get_server_contacts ? 1 : 0);
- db_set_dw(0, m_szModuleName, "ClientID", options.client_id);
- db_set_dw(0, m_szModuleName, "ClientVersionMajor", options.client_versionMajor);
- db_set_dw(0, m_szModuleName, "ClientVersionMinor", options.client_versionMinor);
- db_set_b(0, m_szModuleName, "ErrorDisplay", options.err_method);
-
- db_set_b(0, m_szModuleName, "AutoAddContacts", options.add_contacts ? 1 : 0);
- db_set_b(0, m_szModuleName, "EncryptSession", options.encrypt_session ? 1 : 0);
- db_set_b(0, m_szModuleName, "IdleAsAway", options.idle_as_away ? 1 : 0);
+ setUString("ServerName", options.server_name);
+
+ setUString("stid", options.id);
+ setUString("Password", options.pword);
+
+ setDword("ServerPort", options.port);
+ setByte("GetServerContacts", options.get_server_contacts ? 1 : 0);
+ setDword("ClientID", options.client_id);
+ setDword("ClientVersionMajor", options.client_versionMajor);
+ setDword("ClientVersionMinor", options.client_versionMinor);
+
+ setByte("ErrorDisplay", options.err_method);
+ setByte("AutoAddContacts", options.add_contacts ? 1 : 0);
+ setByte("EncryptSession", options.encrypt_session ? 1 : 0);
+ setByte("IdleAsAway", options.idle_as_away ? 1 : 0);
}
diff --git a/protocols/Sametime/src/session_announce_win.cpp b/protocols/Sametime/src/session_announce_win.cpp index 11ff040c7f..ab4d7bb495 100644 --- a/protocols/Sametime/src/session_announce_win.cpp +++ b/protocols/Sametime/src/session_announce_win.cpp @@ -102,7 +102,7 @@ INT_PTR CALLBACK SessionAnnounceDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wPara lvI.mask = LVIF_PARAM;
ListView_GetItem(GetDlgItem(hwndDlg, IDC_LST_ANTO), &lvI);
- if (!db_get_utf((MCONTACT)lvI.lParam, proto->m_szModuleName, "stid", &dbv)) {
+ if (!proto->getUString((MCONTACT)lvI.lParam, "stid", &dbv)) {
safArg->recipients = g_list_prepend(safArg->recipients, _strdup(dbv.pszVal));
mir_strcpy(p, dbv.pszVal);
safArg->recipients = g_list_prepend(safArg->recipients, _strdup(id));
diff --git a/protocols/Sametime/src/userlist.cpp b/protocols/Sametime/src/userlist.cpp index 1bc5102fff..cc64094d40 100644 --- a/protocols/Sametime/src/userlist.cpp +++ b/protocols/Sametime/src/userlist.cpp @@ -5,7 +5,7 @@ MCONTACT CSametimeProto::FindContactByUserId(const char* id) {
DBVARIANT dbv;
for (auto &hContact : AccContacts()) {
- if (!db_get_utf(hContact, m_szModuleName, "stid", &dbv)) {
+ if (!getUString(hContact, "stid", &dbv)) {
if (dbv.pszVal && mir_strcmp(id, dbv.pszVal) == 0) {
db_free(&dbv);
return hContact;
@@ -21,7 +21,7 @@ bool CSametimeProto::GetAwareIdFromContact(MCONTACT hContact, mwAwareIdBlock* id char *proto = Proto_GetBaseAccountName(hContact);
DBVARIANT dbv;
if (proto && !mir_strcmp(m_szModuleName, proto)) {
- if (!db_get_utf(hContact, m_szModuleName, "stid", &dbv)) {
+ if (!getUString(hContact, "stid", &dbv)) {
if (dbv.pszVal) {
id_block->type = mwAware_USER;
id_block->user = _strdup(dbv.pszVal);
@@ -73,21 +73,21 @@ MCONTACT CSametimeProto::AddContact(mwSametimeUser* user, bool temporary) Contact::Hide(hContact, false);
}
-
// add to miranda
- if (new_contact) db_set_utf(hContact, m_szModuleName, "stid", id);
+ if (new_contact)
+ setUString(hContact, "stid", id);
if (name && mir_strlen(name))
- db_set_utf(hContact, m_szModuleName, "Name", name);
+ setUString(hContact, "Name", name);
- if (nick && mir_strlen(nick)) {
- db_set_utf(hContact, m_szModuleName, "Nick", nick);
+ if (mir_strlen(nick)) {
+ setUString(hContact, "Nick", nick);
}
- else if (name && mir_strlen(name)) {
- db_set_utf(hContact, m_szModuleName, "Nick", name);
+ else if (mir_strlen(name)) {
+ setUString(hContact, "Nick", name);
}
else {
- db_set_utf(hContact, m_szModuleName, "Nick", id);
+ setUString(hContact, "Nick", id);
}
db_set_b(hContact, m_szModuleName, "type", (uint8_t)type);
@@ -196,7 +196,7 @@ void CSametimeProto::ExportContactsToList(mwSametimeList* user_list) mwIdBlock uid;
for (auto &hContact : AccContacts()) {
- if (!db_get_utf(hContact, m_szModuleName, "stid", &dbv)) {
+ if (!getUString(hContact, "stid", &dbv)) {
if (dbv.pszVal) {
if (GetAwareIdFromContact(hContact, &id_block)) {
if (!db_get_utf(hContact, "CList", "Group", &dbv2)) {
@@ -250,7 +250,7 @@ void CSametimeProto::ExportContactsToList(mwSametimeList* user_list) free(group_name);
free(group_alias);
- if (!db_get_utf(hContact, m_szModuleName, "Name", &dbv2)) {
+ if (!getUString(hContact, "Name", &dbv2)) {
user_shortName = _strdup(dbv2.pszVal);
db_free(&dbv2);
}
@@ -451,7 +451,7 @@ void mwAwareList_on_aware(mwAwareList* list, mwAwareSnapshot* aware) DBVARIANT dbv;
// update self - necessary for some servers
- if (aware->online && !db_get_utf(0, proto->m_szModuleName, "stid", &dbv) && mir_strcmp(aware->id.user, dbv.pszVal) == 0) {
+ if (aware->online && !proto->getUString("stid", &dbv) && mir_strcmp(aware->id.user, dbv.pszVal) == 0) {
int new_status = ID_STATUS_OFFLINE;
switch (aware->status.status) {
@@ -587,7 +587,7 @@ void CSametimeProto::UserListCreate() for (auto &hContact : AccContacts()) {
if (!Contact::IsGroupChat(hContact, m_szModuleName) /*&& proto && !mir_strcmp( PROTO, proto)*/) {
- if (!db_get_utf(hContact, m_szModuleName, "stid", &dbv)) {
+ if (!getUString(hContact, "stid", &dbv)) {
if (dbv.pszVal) {
if (GetAwareIdFromContact(hContact, &id_block)) {
// add user to aware list
@@ -603,7 +603,7 @@ void CSametimeProto::UserListCreate() }
// add self - might be necessary for some servers
- if (!db_get_utf(0, m_szModuleName, "stid", &dbv)) {
+ if (!getUString("stid", &dbv)) {
id_block.type = mwAware_USER;
id_block.user = dbv.pszVal;
id_block.community = nullptr;
@@ -710,8 +710,8 @@ void mwResolve_handler_details_callback(mwServiceResolve* srvc, guint32, guint32 if (hContact) {
char* name = ((mwResolveMatch*)mri->data)->name;
if (name && mir_strlen(name)) {
- db_set_utf(hContact, proto->m_szModuleName, "Name", name);
- db_set_utf(hContact, proto->m_szModuleName, "Nick", name);
+ proto->setUString(hContact, "Name", name);
+ proto->setUString(hContact, "Nick", name);
db_set_utf(hContact, "CList", "MyHandle", name);
}
}
diff --git a/protocols/SkypeWeb/src/skype_chatrooms.cpp b/protocols/SkypeWeb/src/skype_chatrooms.cpp index 4f27b13c5c..8fcaa6fc31 100644 --- a/protocols/SkypeWeb/src/skype_chatrooms.cpp +++ b/protocols/SkypeWeb/src/skype_chatrooms.cpp @@ -214,7 +214,7 @@ int CSkypeProto::OnGroupChatEventHook(WPARAM, LPARAM lParam) INT_PTR CSkypeProto::OnJoinChatRoom(WPARAM hContact, LPARAM)
{
if (hContact) {
- ptrW idT(getWStringA(hContact, "ChatRoomID"));
+ ptrW idT(getWStringA(hContact, SKYPE_SETTINGS_ID));
ptrW nameT(getWStringA(hContact, "Nick"));
StartChatRoom(idT, nameT != NULL ? nameT : idT);
}
@@ -227,7 +227,7 @@ INT_PTR CSkypeProto::OnLeaveChatRoom(WPARAM hContact, LPARAM) return 1;
if (hContact && IDYES == MessageBox(nullptr, TranslateT("This chat is going to be destroyed forever with all its contents. This action cannot be undone. Are you sure?"), TranslateT("Warning"), MB_YESNO | MB_ICONQUESTION)) {
- ptrW idT(getWStringA(hContact, "ChatRoomID"));
+ ptrW idT(getWStringA(hContact, SKYPE_SETTINGS_ID));
Chat_Control(m_szModuleName, idT, SESSION_OFFLINE);
Chat_Terminate(m_szModuleName, idT);
diff --git a/protocols/SkypeWeb/src/skype_contacts.cpp b/protocols/SkypeWeb/src/skype_contacts.cpp index 75827daaf6..4de99c709b 100644 --- a/protocols/SkypeWeb/src/skype_contacts.cpp +++ b/protocols/SkypeWeb/src/skype_contacts.cpp @@ -34,7 +34,7 @@ void CSkypeProto::SetContactStatus(MCONTACT hContact, uint16_t status) void CSkypeProto::SetChatStatus(MCONTACT hContact, int iStatus)
{
- ptrW tszChatID(getWStringA(hContact, "ChatRoomID"));
+ ptrW tszChatID(getWStringA(hContact, SKYPE_SETTINGS_ID));
if (tszChatID != NULL)
Chat_Control(m_szModuleName, tszChatID, (iStatus == ID_STATUS_OFFLINE) ? SESSION_OFFLINE : SESSION_ONLINE);
}
@@ -239,7 +239,7 @@ void CSkypeProto::OnContactDeleted(MCONTACT hContact) {
if (IsOnline() && hContact) {
if (isChatRoom(hContact))
- PushRequest(new DestroyChatroomRequest(getMStringA(hContact, "ChatRoomID")));
+ PushRequest(new DestroyChatroomRequest(getMStringA(hContact, SKYPE_SETTINGS_ID)));
else
PushRequest(new DeleteContactRequest(getId(hContact)));
}
diff --git a/protocols/Telegram/src/proto.cpp b/protocols/Telegram/src/proto.cpp index ba9565f09f..fa9313c0be 100644 --- a/protocols/Telegram/src/proto.cpp +++ b/protocols/Telegram/src/proto.cpp @@ -83,7 +83,7 @@ void CTelegramProto::OnModulesLoaded() } bool isGroupChat = isChatRoom(cc); - szId = getMStringA(cc, isGroupChat ? "ChatRoomID" : DBKEY_ID); + szId = getMStringA(cc, DBKEY_ID); if (!szId.IsEmpty()) { auto *pUser = new TG_USER(_atoi64(szId.c_str()), cc, isGroupChat); pUser->szAvatarHash = getMStringA(cc, DBKEY_AVATAR_HASH); diff --git a/protocols/Telegram/src/utils.cpp b/protocols/Telegram/src/utils.cpp index 4a122f70c1..bcf222ecab 100644 --- a/protocols/Telegram/src/utils.cpp +++ b/protocols/Telegram/src/utils.cpp @@ -47,17 +47,14 @@ TG_USER* CTelegramProto::AddUser(uint64_t id, bool bIsChat) char szId[100];
_i64toa(id, szId, 10);
+ setString(hContact, DBKEY_ID, szId);
if (bIsChat) {
Clist_SetGroup(hContact, TranslateT("Chat rooms"));
setByte(hContact, "ChatRoom", 1);
- setString(hContact, "ChatRoomID", szId);
- }
- else {
- setString(hContact, DBKEY_ID, szId);
- if (mir_wstrlen(m_wszDefaultGroup))
- Clist_SetGroup(hContact, m_wszDefaultGroup);
}
+ else if (mir_wstrlen(m_wszDefaultGroup))
+ Clist_SetGroup(hContact, m_wszDefaultGroup);
pUser = new TG_USER(id, hContact, bIsChat);
m_arUsers.insert(pUser);
diff --git a/protocols/VKontakte/src/main.cpp b/protocols/VKontakte/src/main.cpp index ee2ccc09c2..6241d8763f 100644 --- a/protocols/VKontakte/src/main.cpp +++ b/protocols/VKontakte/src/main.cpp @@ -40,7 +40,7 @@ PLUGININFOEX pluginInfoEx = CMPlugin::CMPlugin() :
ACCPROTOPLUGIN<CVkProto>("VKontakte", pluginInfoEx)
{
- SetUniqueId("ID");
+ SetUniqueId("ID", DBVT_DWORD);
}
/////////////////////////////////////////////////////////////////////////////////////////
diff --git a/protocols/VKontakte/src/misc.cpp b/protocols/VKontakte/src/misc.cpp index c60dbb36ad..18c4b0e5be 100644 --- a/protocols/VKontakte/src/misc.cpp +++ b/protocols/VKontakte/src/misc.cpp @@ -117,6 +117,20 @@ char* ExpUrlEncode(const char *szUrl, bool strict) /////////////////////////////////////////////////////////////////////////////////////////
+void CVkProto::CheckUpdate()
+{
+ if (getByte("Compatibility") < 1) {
+ for (auto &cc : AccContacts()) {
+ LONG userId = getDword(cc, "vk_chat_id", VK_INVALID_USER);
+ if (userId != VK_INVALID_USER) {
+ setDword(cc, "ID", userId);
+ delSetting(cc, "vk_chat_id");
+ }
+ }
+ setByte("Compatibility", 1);
+ }
+}
+
void CVkProto::ClearAccessToken()
{
debugLogA("CVkProto::ClearAccessToken");
@@ -183,7 +197,7 @@ MCONTACT CVkProto::FindChat(LONG dwUserid) return 0;
for (auto &hContact : AccContacts()) {
- LONG dbUserid = getDword(hContact, "vk_chat_id", VK_INVALID_USER);
+ LONG dbUserid = getDword(hContact, "ID", VK_INVALID_USER);
if (dbUserid == VK_INVALID_USER)
continue;
diff --git a/protocols/VKontakte/src/vk_chats.cpp b/protocols/VKontakte/src/vk_chats.cpp index 1771b5d474..3a7e2cdfe6 100644 --- a/protocols/VKontakte/src/vk_chats.cpp +++ b/protocols/VKontakte/src/vk_chats.cpp @@ -84,7 +84,7 @@ CVkChatInfo* CVkProto::AppendConversationChat(int iChatId, const JSONNode& jnIte for (int i = _countof(sttStatuses) - 1; i >= 0; i--)
Chat_AddGroup(si, TranslateW(sttStatuses[i]));
- setDword(si->hContact, "vk_chat_id", iChatId);
+ setDword(si->hContact, "ID", iChatId);
CMStringW wszHomepage(FORMAT, L"https://vk.com/im?sel=c%d", iChatId);
setWString(si->hContact, "Homepage", wszHomepage);
@@ -445,6 +445,17 @@ void CVkProto::AppendChatMessage(CVkChatInfo *cc, LONG uid, int msgTime, LPCWSTR /////////////////////////////////////////////////////////////////////////////////////////
+CVkChatInfo* CVkProto::GetChatByContact(MCONTACT hContact)
+{
+ LONG dbUserid = getDword(hContact, "ID", VK_INVALID_USER);
+ if (dbUserid == VK_INVALID_USER)
+ return nullptr;
+
+ wchar_t wszChatID[40];
+ _itow(dbUserid, wszChatID, 10);
+ return GetChatById(wszChatID);
+}
+
CVkChatInfo* CVkProto::GetChatById(LPCWSTR pwszId)
{
for (auto &it : m_chats)
@@ -458,13 +469,9 @@ CVkChatInfo* CVkProto::GetChatById(LPCWSTR pwszId) void CVkProto::SetChatStatus(MCONTACT hContact, int iStatus)
{
- ptrW wszChatID(getWStringA(hContact, "ChatRoomID"));
- if (wszChatID == nullptr)
- return;
-
- CVkChatInfo *cc = GetChatById(wszChatID);
+ CVkChatInfo *cc = GetChatByContact(hContact);
if (cc != nullptr)
- Chat_Control(m_szModuleName, wszChatID, (iStatus == ID_STATUS_OFFLINE) ? SESSION_OFFLINE : SESSION_ONLINE);
+ Chat_Control(m_szModuleName, cc->m_wszId, (iStatus == ID_STATUS_OFFLINE) ? SESSION_OFFLINE : SESSION_ONLINE);
}
/////////////////////////////////////////////////////////////////////////////////////////
@@ -601,7 +608,7 @@ INT_PTR __cdecl CVkProto::OnJoinChat(WPARAM hContact, LPARAM) if (!IsOnline() || getBool(hContact, "kicked") || !getBool(hContact, "off"))
return 1;
- int chat_id = getDword(hContact, "vk_chat_id", VK_INVALID_USER);
+ int chat_id = getDword(hContact, "ID", VK_INVALID_USER);
if (chat_id == VK_INVALID_USER)
return 1;
@@ -619,11 +626,7 @@ INT_PTR __cdecl CVkProto::OnLeaveChat(WPARAM hContact, LPARAM) if (!IsOnline())
return 1;
- ptrW wszChatID(getWStringA(hContact, "ChatRoomID"));
- if (wszChatID == nullptr)
- return 1;
-
- CVkChatInfo *cc = GetChatById(wszChatID);
+ CVkChatInfo *cc = GetChatByContact(hContact);
if (cc == nullptr)
return 1;
@@ -705,7 +708,7 @@ INT_PTR __cdecl CVkProto::SvcDestroyKickChat(WPARAM hContact, LPARAM) if (!getBool(hContact, "off"))
return 1;
- int chat_id = getDword(hContact, "vk_chat_id", VK_INVALID_USER);
+ int chat_id = getDword(hContact, "ID", VK_INVALID_USER);
if (chat_id == VK_INVALID_USER)
return 1;
diff --git a/protocols/VKontakte/src/vk_files.cpp b/protocols/VKontakte/src/vk_files.cpp index a7306c1568..7ac1b9657e 100644 --- a/protocols/VKontakte/src/vk_files.cpp +++ b/protocols/VKontakte/src/vk_files.cpp @@ -363,14 +363,7 @@ void CVkProto::OnReciveUploadFile(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pR AsyncHttpRequest *pMsgReq;
if (isChatRoom(fup->hContact)) {
-
- ptrW wszChatID(getWStringA(fup->hContact, "ChatRoomID"));
- if (!wszChatID) {
- SendFileFiled(fup, VKERR_INVALID_USER);
- return;
- }
-
- CVkChatInfo *cc = GetChatById(wszChatID);
+ CVkChatInfo *cc = GetChatByContact(fup->hContact);
if (cc == nullptr) {
SendFileFiled(fup, VKERR_INVALID_USER);
return;
diff --git a/protocols/VKontakte/src/vk_messages.cpp b/protocols/VKontakte/src/vk_messages.cpp index e6f31c2256..7bec7a13fd 100644 --- a/protocols/VKontakte/src/vk_messages.cpp +++ b/protocols/VKontakte/src/vk_messages.cpp @@ -26,8 +26,8 @@ int CVkProto::SendMsg(MCONTACT hContact, int, const char *szMsg) return 0;
bool bIsChat = isChatRoom(hContact);
- LONG iUserID = getDword(hContact, bIsChat ? "vk_chat_id" : "ID", VK_INVALID_USER);
+ LONG iUserID = getDword(hContact, "ID", VK_INVALID_USER);
if (iUserID == VK_INVALID_USER || iUserID == VK_FEED_USER) {
ProtoBroadcastAsync(hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, 0);
return 0;
diff --git a/protocols/VKontakte/src/vk_proto.cpp b/protocols/VKontakte/src/vk_proto.cpp index f16be722f7..b712b83eb2 100644 --- a/protocols/VKontakte/src/vk_proto.cpp +++ b/protocols/VKontakte/src/vk_proto.cpp @@ -46,6 +46,7 @@ CVkProto::CVkProto(const char *szModuleName, const wchar_t *pwszUserName) : m_tWorkThreadTimer = m_tPoolThreadTimer = time(0);
InitQueue();
+ CheckUpdate();
CreateProtoService(PS_CREATEACCMGRUI, &CVkProto::SvcCreateAccMgrUI);
CreateProtoService(PS_GETAVATARINFO, &CVkProto::SvcGetAvatarInfo);
diff --git a/protocols/VKontakte/src/vk_proto.h b/protocols/VKontakte/src/vk_proto.h index fd680580a6..43936e8c5b 100644 --- a/protocols/VKontakte/src/vk_proto.h +++ b/protocols/VKontakte/src/vk_proto.h @@ -357,6 +357,7 @@ private: int IsHystoryMessageExist(MCONTACT hContact);
void SetSrmmReadStatus(MCONTACT hContact);
void MarkDialogAsRead(MCONTACT hContact);
+ void CheckUpdate();
char* GetStickerId(const char *Msg, int& stickerid);
CMStringA GetAttachmentsFromMessage(const char * Msg);
CMStringW SpanVKNotificationType(CMStringW& wszType, VKObjType& vkFeedback, VKObjType& vkParent);
@@ -413,6 +414,7 @@ private: LPTSTR ChangeChatTopic(CVkChatInfo*);
void SetChatStatus(MCONTACT hContact, int iStatus);
CVkChatInfo* GetChatById(LPCWSTR pwszId);
+ CVkChatInfo* GetChatByContact(MCONTACT hContact);
INT_PTR __cdecl SvcCreateChat(WPARAM, LPARAM);
void __cdecl GetAwayMsgThread(void* p);
};
diff --git a/protocols/WhatsApp/src/avatars.cpp b/protocols/WhatsApp/src/avatars.cpp index fd4bbfde1f..7be5b1d412 100644 --- a/protocols/WhatsApp/src/avatars.cpp +++ b/protocols/WhatsApp/src/avatars.cpp @@ -46,7 +46,7 @@ INT_PTR WhatsAppProto::GetAvatarInfo(WPARAM wParam, LPARAM lParam) {
PROTO_AVATAR_INFORMATION *pai = (PROTO_AVATAR_INFORMATION*)lParam;
- ptrA jid(getStringA(pai->hContact, isChatRoom(pai->hContact) ? "ChatRoomID" : DBKEY_ID));
+ ptrA jid(getStringA(pai->hContact, DBKEY_ID));
if (jid == NULL)
return GAIR_NOAVATAR;
@@ -94,7 +94,7 @@ CMStringW WhatsAppProto::GetAvatarFileName(MCONTACT hContact) CMStringA jid;
if (hContact != NULL) {
- ptrA szId(getStringA(hContact, isChatRoom(hContact) ? "ChatRoomID" : DBKEY_ID));
+ ptrA szId(getStringA(hContact, DBKEY_ID));
if (szId == NULL)
return L"";
diff --git a/protocols/WhatsApp/src/proto.cpp b/protocols/WhatsApp/src/proto.cpp index 40ab1336b8..1c2e0a7142 100644 --- a/protocols/WhatsApp/src/proto.cpp +++ b/protocols/WhatsApp/src/proto.cpp @@ -153,10 +153,9 @@ void WhatsAppProto::OnModulesLoaded() m_arUsers.insert(new WAUser(0, m_szJid, false));
for (auto &cc : AccContacts()) {
- bool bIsChat = isChatRoom(cc);
- CMStringA szId(getMStringA(cc, bIsChat ? "ChatRoomID" : DBKEY_ID));
+ CMStringA szId(getMStringA(cc, DBKEY_ID));
if (!szId.IsEmpty())
- m_arUsers.insert(new WAUser(cc, szId, bIsChat));
+ m_arUsers.insert(new WAUser(cc, szId, isChatRoom(cc)));
}
}
diff --git a/protocols/WhatsApp/src/utils.cpp b/protocols/WhatsApp/src/utils.cpp index 1e2d39f553..a1d234e405 100644 --- a/protocols/WhatsApp/src/utils.cpp +++ b/protocols/WhatsApp/src/utils.cpp @@ -113,19 +113,16 @@ WAUser* WhatsAppProto::AddUser(const char *szId, bool bTemporary) MCONTACT hContact = db_add_contact();
Proto_AddToContact(hContact, m_szModuleName);
+ setString(hContact, DBKEY_ID, szId);
pUser = new WAUser(hContact, mir_strdup(szId));
pUser->bIsGroupChat = WAJid(szId).isGroup();
if (pUser->bIsGroupChat) {
setByte(hContact, "ChatRoom", 1);
- setString(hContact, "ChatRoomID", szId);
- }
- else {
- setString(hContact, DBKEY_ID, szId);
- if (m_wszDefaultGroup)
- Clist_SetGroup(hContact, m_wszDefaultGroup);
}
+ else if (m_wszDefaultGroup)
+ Clist_SetGroup(hContact, m_wszDefaultGroup);
if (bTemporary)
Contact::RemoveFromList(hContact);
|