From dedb8fbff8c6f38091623bd0833919088a176df7 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 24 Mar 2024 17:34:24 +0300 Subject: fixes #4164 (WhatsApp: endless popups loop when an account is untied from the phone) --- protocols/WhatsApp/src/proto.cpp | 17 +++++++++++------ protocols/WhatsApp/src/proto.h | 1 + protocols/WhatsApp/src/server.cpp | 2 +- 3 files changed, 13 insertions(+), 7 deletions(-) (limited to 'protocols/WhatsApp') diff --git a/protocols/WhatsApp/src/proto.cpp b/protocols/WhatsApp/src/proto.cpp index 46714805d1..9cf48f0d6b 100644 --- a/protocols/WhatsApp/src/proto.cpp +++ b/protocols/WhatsApp/src/proto.cpp @@ -123,11 +123,8 @@ static int sttEnumFunc(const char *szSetting, void *param) return 0; } -void WhatsAppProto::OnErase() +void WhatsAppProto::RemoveCachedSettings() { - m_bUnregister = true; - ServerThreadWorker(); - // remove all temporary data from database & disk folder LIST arSettings(50); db_enum_settings(0, sttEnumFunc, m_szModuleName, &arSettings); @@ -136,11 +133,19 @@ void WhatsAppProto::OnErase() mir_free(it); } - DeleteDirectoryTreeW(CMStringW(VARSW(L"%miranda_userdata%")) + L"\\" + _A2T(m_szModuleName), false); - m_szJid.Empty(); } +void WhatsAppProto::OnErase() +{ + m_bUnregister = true; + ServerThreadWorker(); + + RemoveCachedSettings(); + + DeleteDirectoryTreeW(CMStringW(VARSW(L"%miranda_userdata%")) + L"\\" + _A2T(m_szModuleName), false); +} + ///////////////////////////////////////////////////////////////////////////////////////// // OnModulesLoaded emulator for an account diff --git a/protocols/WhatsApp/src/proto.h b/protocols/WhatsApp/src/proto.h index 076c11d8f3..3a7842bd1f 100644 --- a/protocols/WhatsApp/src/proto.h +++ b/protocols/WhatsApp/src/proto.h @@ -311,6 +311,7 @@ class WhatsAppProto : public PROTO void ApplyPatch(const JSONNode &index, const Wa__SyncActionValue *data); void ParsePatch(WACollection *pColl, const Wa__SyncdRecord *rec, bool bSet); void ProcessHistorySync(const Wa__HistorySync *pSync); + void RemoveCachedSettings(); void ResyncServer(const OBJLIST &task); void ResyncAll(void); diff --git a/protocols/WhatsApp/src/server.cpp b/protocols/WhatsApp/src/server.cpp index dc1a3d71f3..e6305d3dd5 100644 --- a/protocols/WhatsApp/src/server.cpp +++ b/protocols/WhatsApp/src/server.cpp @@ -226,7 +226,7 @@ void WhatsAppProto::ProcessFailure(int code) debugLogA("Connection logged out from another device, exiting"); Popup(0, TranslateT("This account was logged out from mobile phone, you need to link it again"), m_tszUserName); - OnErase(); + RemoveCachedSettings(); break; case 408: -- cgit v1.2.3