diff options
Diffstat (limited to 'protocols/Discord/src')
-rw-r--r-- | protocols/Discord/src/http.cpp | 12 | ||||
-rw-r--r-- | protocols/Discord/src/options.cpp | 20 | ||||
-rw-r--r-- | protocols/Discord/src/server.cpp | 10 |
3 files changed, 29 insertions, 13 deletions
diff --git a/protocols/Discord/src/http.cpp b/protocols/Discord/src/http.cpp index b8e71aa09a..b349eac36b 100644 --- a/protocols/Discord/src/http.cpp +++ b/protocols/Discord/src/http.cpp @@ -107,7 +107,8 @@ void CDiscordProto::ServerThread(void*) if (m_szAccessToken != nullptr)
RetrieveMyInfo(); // try to receive a response from server
else {
- if (mir_wstrlen(m_wszEmail) == 0) {
+ CMStringW wszEmail(m_wszEmail);
+ if (wszEmail.IsEmpty()) {
ConnectionFailed(LOGINERR_BADUSERID);
return;
}
@@ -118,7 +119,14 @@ void CDiscordProto::ServerThread(void*) return;
}
- JSONNode root; root << WCHAR_PARAM("email", m_wszEmail) << WCHAR_PARAM("password", wszPassword);
+ JSONNode root; root << WCHAR_PARAM("password", wszPassword);
+ if (wszEmail.Find('@') == -1) {
+ if (wszEmail[0] != '+')
+ wszEmail.Insert(0, L"+");
+ root << WCHAR_PARAM("login", wszEmail) ;
+ }
+ else root << WCHAR_PARAM("email", wszEmail);
+
Push(new AsyncHttpRequest(this, REQUEST_POST, "/auth/login", &CDiscordProto::OnReceiveToken, &root));
}
diff --git a/protocols/Discord/src/options.cpp b/protocols/Discord/src/options.cpp index 3262b37671..dc1c6eafa8 100644 --- a/protocols/Discord/src/options.cpp +++ b/protocols/Discord/src/options.cpp @@ -81,7 +81,15 @@ public: void onClick_Logout(CCtrlButton *)
{
- m_proto->Push(new AsyncHttpRequest(m_proto, REQUEST_POST, "/auth/logout", &CDiscordProto::OnReceiveLogout));
+ auto *pReq = new AsyncHttpRequest(m_proto, REQUEST_POST, "/auth/logout", &CDiscordProto::OnReceiveLogout);
+ pReq->pUserInfo = this;
+ m_proto->Push(pReq);
+ }
+
+ void onLogout()
+ {
+ m_edUserName.Enable();
+ m_edPassword.Enable();
}
void onChange_GroupChats(CCtrlCheck*)
@@ -92,6 +100,16 @@ public: }
};
+void CDiscordProto::OnReceiveLogout(MHttpResponse *, AsyncHttpRequest *pReq)
+{
+ delSetting(DB_KEY_TOKEN);
+ m_szAccessToken = 0;
+ ShutdownSession();
+
+ auto *pDlg = (CDiscardAccountOptions *)pReq->pUserInfo;
+ pDlg->onLogout();
+}
+
/////////////////////////////////////////////////////////////////////////////////////////
MWindow CDiscordProto::OnCreateAccMgrUI(MWindow hwndParent)
diff --git a/protocols/Discord/src/server.cpp b/protocols/Discord/src/server.cpp index 54d41ede49..728a56da7d 100644 --- a/protocols/Discord/src/server.cpp +++ b/protocols/Discord/src/server.cpp @@ -165,7 +165,6 @@ void CDiscordProto::OnReceiveMyInfo(MHttpResponse *pReply, AsyncHttpRequest*) setByte(0, DB_KEY_MFA, data["mfa_enabled"].as_bool());
setDword(0, DB_KEY_DISCR, _wtoi(data["discriminator"].as_mstring()));
setWString(0, DB_KEY_NICK, data["username"].as_mstring());
- m_wszEmail = data["email"].as_mstring();
m_ownId = id;
m_szCookie = pReply->GetCookies();
@@ -217,15 +216,6 @@ void CDiscordProto::OnReceiveCreateChannel(MHttpResponse *pReply, AsyncHttpReque /////////////////////////////////////////////////////////////////////////////////////////
-void CDiscordProto::OnReceiveLogout(MHttpResponse *, AsyncHttpRequest *)
-{
- delSetting(DB_KEY_TOKEN);
- m_szAccessToken = 0;
- ShutdownSession();
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-
void CDiscordProto::OnReceiveMessageAck(MHttpResponse *pReply, AsyncHttpRequest*)
{
JsonReply root(pReply);
|