diff options
author | George Hazan <george.hazan@gmail.com> | 2024-03-24 17:34:24 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2024-03-24 17:34:24 +0300 |
commit | dedb8fbff8c6f38091623bd0833919088a176df7 (patch) | |
tree | ad2be1d2a61f5bcf9978082c1a54448339643140 | |
parent | 73e22c7764a4fdfd8f770f6789fec222be36e776 (diff) |
fixes #4164 (WhatsApp: endless popups loop when an account is untied from the phone)
-rw-r--r-- | protocols/WhatsApp/src/proto.cpp | 17 | ||||
-rw-r--r-- | protocols/WhatsApp/src/proto.h | 1 | ||||
-rw-r--r-- | protocols/WhatsApp/src/server.cpp | 2 |
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:
|