From a14e6388fd3266c6815a4ebaad3a942896c3e80a Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 22 Feb 2023 17:02:52 +0300 Subject: if one needs to remove a chat's contact, just remove it and don't fuck my brain --- src/mir_app/src/chat.h | 2 +- src/mir_app/src/chat_manager.cpp | 7 ++----- src/mir_app/src/chat_svc.cpp | 13 ++++++------- src/mir_app/src/mir_app.def | 4 ++-- src/mir_app/src/mir_app64.def | 4 ++-- 5 files changed, 13 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/mir_app/src/chat.h b/src/mir_app/src/chat.h index d36a72af71..baa328fd99 100644 --- a/src/mir_app/src/chat.h +++ b/src/mir_app/src/chat.h @@ -68,7 +68,7 @@ MODULEINFO* MM_FindModule(const char *pszModule); BOOL SM_AddEvent(SESSION_INFO *si, GCEVENT *gce, bool bIsHighlighted); BOOL SM_ChangeNick(SESSION_INFO *si, GCEVENT *gce); -void SM_FreeSession(SESSION_INFO *si, bool bRemoveContact = false); +void SM_FreeSession(SESSION_INFO *si); char* SM_GetUsers(SESSION_INFO *si); BOOL SM_GiveStatus(SESSION_INFO *si, const wchar_t *pszUID, const wchar_t *pszStatus); void SM_RemoveAll(void); diff --git a/src/mir_app/src/chat_manager.cpp b/src/mir_app/src/chat_manager.cpp index dc6e7aaa1b..400eb08aca 100644 --- a/src/mir_app/src/chat_manager.cpp +++ b/src/mir_app/src/chat_manager.cpp @@ -163,7 +163,7 @@ static SESSION_INFO* SM_CreateSession(void) return new SESSION_INFO(); } -void SM_FreeSession(SESSION_INFO *si, bool bRemoveContact) +void SM_FreeSession(SESSION_INFO *si) { if (g_clistApi.pfnGetEvent(si->hContact, 0)) g_clistApi.pfnRemoveEvent(si->hContact, GC_FAKE_EVENT); @@ -175,9 +175,6 @@ void SM_FreeSession(SESSION_INFO *si, bool bRemoveContact) Chat_DoEventHook(si, GC_SESSION_TERMINATE, nullptr, nullptr, (INT_PTR)si->pItemData); - if (si->hContact && bRemoveContact) - db_delete_contact(si->hContact); - // contact may have been deleted here already, since function may be called after deleting // contact so the handle may be invalid, therefore db_get_b shall return 0 if (si->hContact && Contact::IsGroupChat(si->hContact, si->pszModule)) { @@ -411,7 +408,7 @@ BOOL SM_ChangeNick(SESSION_INFO *si, GCEVENT *gce) void SM_RemoveAll(void) { for (auto &it : g_arSessions.rev_iter()) { - SM_FreeSession(it, false); + SM_FreeSession(it); g_arSessions.removeItem(&it); } } diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp index 0731fb09b4..47ad6d4954 100644 --- a/src/mir_app/src/chat_svc.cpp +++ b/src/mir_app/src/chat_svc.cpp @@ -373,7 +373,6 @@ struct ChatTerminateParam { const char *pszModule; SESSION_INFO *si; - bool bRemoveContact; }; static INT_PTR __stdcall stubRoomTerminate(void *param) @@ -381,7 +380,7 @@ static INT_PTR __stdcall stubRoomTerminate(void *param) ChatTerminateParam *p = (ChatTerminateParam*)param; if (p->si) { g_arSessions.remove(p->si); - SM_FreeSession(p->si, p->bRemoveContact); + SM_FreeSession(p->si); } else { if (p->pszModule == nullptr) @@ -390,23 +389,23 @@ static INT_PTR __stdcall stubRoomTerminate(void *param) // remove all sessions with matching module name for (auto &si : g_arSessions.rev_iter()) if (si->iType != GCW_SERVER && !mir_strcmpi(si->pszModule, p->pszModule)) - SM_FreeSession(g_arSessions.removeItem(&si), p->bRemoveContact); + SM_FreeSession(g_arSessions.removeItem(&si)); } return TRUE; } -MIR_APP_DLL(int) Chat_Terminate(const char *szModule, bool bRemoveContact) +MIR_APP_DLL(int) Chat_Terminate(const char *szModule) { - ChatTerminateParam param = { szModule, 0, bRemoveContact }; + ChatTerminateParam param = { szModule, 0 }; return CallFunctionSync(stubRoomTerminate, ¶m); } -MIR_APP_DLL(int) Chat_Terminate(SESSION_INFO *si, bool bRemoveContact) +MIR_APP_DLL(int) Chat_Terminate(SESSION_INFO *si) { if (!g_arSessions.find(si)) return GC_EVENT_ERROR; - ChatTerminateParam param = { 0, si, bRemoveContact }; + ChatTerminateParam param = { 0, si }; return CallFunctionSync(stubRoomTerminate, ¶m); } diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index bca07ef01d..e9f04abf2f 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -814,8 +814,8 @@ Srmm_CreateHotkey @886 NONAME ?Chat_SetStatusEx@@YGHPBDHPB_W@Z @929 NONAME ?Chat_SetStatusbarText@@YGHPAUSESSION_INFO@@PB_W@Z @930 NONAME ?Chat_SetUserInfo@@YGHPAUSESSION_INFO@@PAX@Z @931 NONAME -?Chat_Terminate@@YGHPAUSESSION_INFO@@_N@Z @932 NONAME -?Chat_Terminate@@YGHPBD_N@Z @933 NONAME +?Chat_Terminate@@YGHPAUSESSION_INFO@@@Z @932 NONAME +?Chat_Terminate@@YGHPBD@Z @933 NONAME ?Chat_Control@@YGHPBDH@Z @934 NONAME ?UpdateChatLog@CSrmmBaseDialog@@IAEXXZ @935 NONAME ?OnMarkRead@PROTO_INTERFACE@@UAEXII@Z @936 NONAME diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index b1ec756b7f..ba56983a07 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -814,8 +814,8 @@ Srmm_CreateHotkey @886 NONAME ?Chat_SetStatusEx@@YAHPEBDHPEB_W@Z @929 NONAME ?Chat_SetStatusbarText@@YAHPEAUSESSION_INFO@@PEB_W@Z @930 NONAME ?Chat_SetUserInfo@@YAHPEAUSESSION_INFO@@PEAX@Z @931 NONAME -?Chat_Terminate@@YAHPEAUSESSION_INFO@@_N@Z @932 NONAME -?Chat_Terminate@@YAHPEBD_N@Z @933 NONAME +?Chat_Terminate@@YAHPEAUSESSION_INFO@@@Z @932 NONAME +?Chat_Terminate@@YAHPEBD@Z @933 NONAME ?Chat_Control@@YAHPEBDH@Z @934 NONAME ?UpdateChatLog@CSrmmBaseDialog@@IEAAXXZ @935 NONAME ?OnMarkRead@PROTO_INTERFACE@@UEAAXII@Z @936 NONAME -- cgit v1.2.3