summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2024-03-24 17:34:24 +0300
committerGeorge Hazan <george.hazan@gmail.com>2024-03-24 17:34:24 +0300
commitdedb8fbff8c6f38091623bd0833919088a176df7 (patch)
treead2be1d2a61f5bcf9978082c1a54448339643140
parent73e22c7764a4fdfd8f770f6789fec222be36e776 (diff)
fixes #4164 (WhatsApp: endless popups loop when an account is untied from the phone)
-rw-r--r--protocols/WhatsApp/src/proto.cpp17
-rw-r--r--protocols/WhatsApp/src/proto.h1
-rw-r--r--protocols/WhatsApp/src/server.cpp2
3 files changed, 13 insertions, 7 deletions
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<char> 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<WhatsAppProto>
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<WACollection> &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: