diff options
-rw-r--r-- | protocols/Facebook/src/proto.h | 4 | ||||
-rw-r--r-- | protocols/Facebook/src/server.cpp | 22 |
2 files changed, 17 insertions, 9 deletions
diff --git a/protocols/Facebook/src/proto.h b/protocols/Facebook/src/proto.h index e86117bfff..3a69b24022 100644 --- a/protocols/Facebook/src/proto.h +++ b/protocols/Facebook/src/proto.h @@ -407,7 +407,7 @@ class FacebookProto : public PROTO<FacebookProto> uint8_t *doZip(size_t cbData, const void *pData, size_t &cbRes); uint8_t *doUnzip(size_t cbData, const void *pData, size_t &cbRes); - void ConnectionFailed(); + void ConnectionFailed(int iErrorCode = 0); AsyncHttpRequest *CreateRequest(const char *szUrl, const char *szName, const char *szMethod); AsyncHttpRequest *CreateRequestGQL(int64_t id); @@ -482,7 +482,7 @@ class FacebookProto : public PROTO<FacebookProto> FacebookUser* RefreshThread(JSONNode &n); FacebookUser* RefreshThread(CMStringW &wszId); bool RefreshSid(); - bool RefreshToken(); + int RefreshToken(); void RefreshThreads(); int RefreshContacts(); diff --git a/protocols/Facebook/src/server.cpp b/protocols/Facebook/src/server.cpp index 034d2b9873..5455806163 100644 --- a/protocols/Facebook/src/server.cpp +++ b/protocols/Facebook/src/server.cpp @@ -20,8 +20,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "stdafx.h" -void FacebookProto::ConnectionFailed() +void FacebookProto::ConnectionFailed(int iErrorCode) { + if (iErrorCode) { + POPUPDATAW popup; + popup.lchIcon = IcoLib_GetIconByHandle(Skin_GetIconHandle(SKINICON_ERROR), true); + wcscpy_s(popup.lpwzContactName, m_tszUserName); + mir_snwprintf(popup.lpwzText, TranslateT("Connection failed with error code %d"), iErrorCode); + PUAddPopupW(&popup); + } + ProtoBroadcastAck(0, ACKTYPE_STATUS, ACKRESULT_FAILED, (HANDLE)m_iStatus, m_iDesiredStatus); m_iStatus = m_iDesiredStatus = ID_STATUS_OFFLINE; @@ -346,7 +354,7 @@ void FacebookProto::RefreshThreads() } } -bool FacebookProto::RefreshToken() +int FacebookProto::RefreshToken() { auto *pReq = CreateRequest(FB_API_URL_AUTH, "authenticate", "auth.login"); pReq->flags |= NLHRF_NODUMP; @@ -356,7 +364,7 @@ bool FacebookProto::RefreshToken() JsonReply reply(ExecuteRequest(pReq)); if (reply.error()) - return false; + return reply.error(); m_szAuthToken = reply.data()["access_token"].as_mstring(); setString(DBKEY_TOKEN, m_szAuthToken); @@ -364,7 +372,7 @@ bool FacebookProto::RefreshToken() CMStringA m_szUid = reply.data()["uid"].as_mstring(); setString(DBKEY_ID, m_szUid); m_uid = _atoi64(m_szUid); - return true; + return 0; } ///////////////////////////////////////////////////////////////////////////////////////// @@ -376,8 +384,8 @@ void FacebookProto::ServerThread(void *) LBL_Begin: m_szAuthToken = getMStringA(DBKEY_TOKEN); if (m_szAuthToken.IsEmpty()) { - if (!RefreshToken()) { - ConnectionFailed(); + if (int iErrorCode = RefreshToken()) { + ConnectionFailed(iErrorCode); return; } } @@ -389,7 +397,7 @@ LBL_Begin: goto LBL_Begin; } - ConnectionFailed(); + ConnectionFailed(iErrorCode); return; } |