Skip to content

Commit

Permalink
fixes #3410 (SkypeWeb: протокол не подключается)
Browse files Browse the repository at this point in the history
  • Loading branch information
georgehazan committed Mar 7, 2023
1 parent 850a00c commit 76788a1
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 31 deletions.
30 changes: 30 additions & 0 deletions protocols/SkypeWeb/src/skype_login.cpp
Expand Up @@ -17,8 +17,34 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.

#include "stdafx.h"

void CSkypeProto::CheckConvert()
{
m_szSkypename = getMStringA(SKYPE_SETTINGS_ID);
if (m_szSkypename.IsEmpty()) {
m_szSkypename = getMStringA(SKYPE_SETTINGS_LOGIN);
if (!m_szSkypename.IsEmpty()) { // old settings format, need to update all settings
m_szSkypename.Insert(0, "8:");
setString(SKYPE_SETTINGS_ID, m_szSkypename);

for (auto &hContact : AccContacts()) {
CMStringA id(ptrA(getUStringA(hContact, "Skypename")));
if (!id.IsEmpty())
setString(hContact, SKYPE_SETTINGS_ID, (isChatRoom(hContact)) ? "19:" + id : "8:" + id);

ptrW wszNick(getWStringA(hContact, "Nick"));
if (wszNick == nullptr)
setUString(hContact, "Nick", id);

delSetting(hContact, "Skypename");
}
}
}
}

void CSkypeProto::Login()
{
CheckConvert();

// login
m_iStatus = ID_STATUS_CONNECTING;
StartQueue();
Expand Down Expand Up @@ -107,6 +133,10 @@ void CSkypeProto::OnLoginSuccess()
m_bThreadsTerminated = false;
ProtoBroadcastAck(NULL, ACKTYPE_LOGIN, ACKRESULT_SUCCESS, NULL, 0);

int oldStatus = m_iStatus;
m_iStatus = m_iDesiredStatus;
ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)oldStatus, m_iStatus);

m_szApiToken = getStringA("TokenSecret");

m_impl.m_heartBeat.StartSafe(600 * 1000);
Expand Down
37 changes: 7 additions & 30 deletions protocols/SkypeWeb/src/skype_proto.cpp
Expand Up @@ -57,27 +57,7 @@ CSkypeProto::CSkypeProto(const char* protoName, const wchar_t* userName) :

m_hPollingThread = ForkThreadEx(&CSkypeProto::PollingThread, NULL, NULL);

m_szSkypename = getMStringA(SKYPE_SETTINGS_ID);
if (m_szSkypename.IsEmpty()) {
m_szSkypename = getMStringA(SKYPE_SETTINGS_LOGIN);
if (!m_szSkypename.IsEmpty()) { // old settings format, need to update all settings
m_szSkypename.Insert(0, "8:");
setString(SKYPE_SETTINGS_ID, m_szSkypename);

for (auto &hContact : AccContacts()) {
CMStringA id(ptrA(getUStringA(hContact, "Skypename")));
if (!id.IsEmpty())
setString(hContact, SKYPE_SETTINGS_ID, (isChatRoom(hContact)) ? "19:"+id : "8:"+id);

ptrW wszNick(getWStringA(hContact, "Nick"));
if (wszNick == nullptr)
setUString(hContact, "Nick", id);

delSetting(hContact, "Skypename");
}
}
}

CheckConvert();
InitGroupChatModule();
}

Expand Down Expand Up @@ -282,17 +262,14 @@ int CSkypeProto::SetStatus(int iNewStatus)
setAllContactStatuses(ID_STATUS_OFFLINE, false);
return 0;
}
else {
if (old_status == ID_STATUS_CONNECTING)
return 0;

if (old_status == ID_STATUS_OFFLINE && m_iStatus == ID_STATUS_OFFLINE)
Login();
else
PushRequest(new SetStatusRequest(MirandaToSkypeStatus(m_iDesiredStatus)));
}
if (m_iStatus == ID_STATUS_CONNECTING)
return 0;

ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus);
if (m_iStatus == ID_STATUS_OFFLINE)
Login();
else
PushRequest(new SetStatusRequest(MirandaToSkypeStatus(m_iDesiredStatus)));
return 0;
}

Expand Down
4 changes: 3 additions & 1 deletion protocols/SkypeWeb/src/skype_proto.h
Expand Up @@ -80,7 +80,7 @@ struct CSkypeProto : public PROTO <CSkypeProto>
// menus
static void InitMenus();

//popups
// popups
void InitPopups();
void UninitPopups();

Expand Down Expand Up @@ -158,6 +158,8 @@ struct CSkypeProto : public PROTO <CSkypeProto>
void OnGetChatInfo(NETLIBHTTPREQUEST *response, AsyncHttpRequest *pRequest);
void OnReceiveAwayMsg(NETLIBHTTPREQUEST *response, AsyncHttpRequest *pRequest);

void CheckConvert(void);

bool CheckOauth(const char *szResponse);
void LoadProfile(NETLIBHTTPREQUEST *response, AsyncHttpRequest *pRequest);

Expand Down

0 comments on commit 76788a1

Please sign in to comment.