Compare commits

...

8 Commits

Author SHA1 Message Date
Roberto Viola
dfb745dac3 Update project.pbxproj 2025-04-03 09:07:41 +02:00
Roberto Viola
e3aad11cfc Update peloton.cpp 2025-04-03 09:01:12 +02:00
Roberto Viola
2b01c826f8 Update peloton.cpp 2025-04-02 17:05:51 +02:00
Roberto Viola
0467a8f316 Merge branch 'New-peloton-Login-issues-#3323' of https://github.com/cagnulein/qdomyos-zwift into New-peloton-Login-issues-#3323 2025-04-02 16:44:42 +02:00
Roberto Viola
da376a43fd Update peloton.cpp 2025-04-02 16:44:11 +02:00
Roberto Viola
19ebca2493 adding version into the agent 2025-04-02 16:25:45 +02:00
Roberto Viola
2fb0698a24 Update peloton.cpp 2025-04-02 15:26:51 +02:00
Roberto Viola
527002f9da trying to fix it. not tested 2025-04-02 14:51:31 +02:00
3 changed files with 52 additions and 30 deletions

View File

@@ -4285,7 +4285,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "../src/ios/qdomyos-zwift.entitlements";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1057;
CURRENT_PROJECT_VERSION = 1059;
DEVELOPMENT_TEAM = 6335M7T29D;
ENABLE_BITCODE = NO;
GCC_PREPROCESSOR_DEFINITIONS = "ADB_HOST=1";
@@ -4479,7 +4479,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "../src/ios/qdomyos-zwift.entitlements";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1057;
CURRENT_PROJECT_VERSION = 1059;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = 6335M7T29D;
ENABLE_BITCODE = NO;
@@ -4709,7 +4709,7 @@
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1057;
CURRENT_PROJECT_VERSION = 1059;
DEVELOPMENT_TEAM = 6335M7T29D;
ENABLE_BITCODE = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
@@ -4805,7 +4805,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1057;
CURRENT_PROJECT_VERSION = 1059;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 6335M7T29D;
ENABLE_BITCODE = YES;
@@ -4897,7 +4897,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1057;
CURRENT_PROJECT_VERSION = 1059;
DEVELOPMENT_ASSET_PATHS = "\"watchkit Extension/Preview Content\"";
ENABLE_BITCODE = YES;
ENABLE_PREVIEWS = YES;
@@ -5013,7 +5013,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1057;
CURRENT_PROJECT_VERSION = 1059;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_ASSET_PATHS = "\"watchkit Extension/Preview Content\"";
ENABLE_BITCODE = YES;

View File

@@ -16,7 +16,7 @@ using namespace std::chrono_literals;
const bool log_request = true;
#define RAWHEADER request.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/json"));request.setHeader(QNetworkRequest::UserAgentHeader, QStringLiteral("qdomyos-zwift"));request.setRawHeader(QByteArray("Authorization"), QByteArray("Bearer ") + getPelotonTokenForUser(QZSettings::peloton_accesstoken, userId, QZSettings::default_peloton_accesstoken).toString().toUtf8());
#define RAWHEADER request.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/json"));request.setHeader(QNetworkRequest::UserAgentHeader, QStringLiteral("qdomyos-zwift/") + QCoreApplication::applicationVersion());request.setRawHeader(QByteArray("Authorization"), QByteArray("Bearer ") + (tempAccessToken.isEmpty() ? getPelotonTokenForUser(QZSettings::peloton_accesstoken, userId, QZSettings::default_peloton_accesstoken).toString().toUtf8() : tempAccessToken.toUtf8()));
peloton::peloton(bluetooth *bl, QObject *parent) : QObject(parent) {
@@ -693,11 +693,23 @@ void peloton::login_onfinish(QNetworkReply *reply) {
QSettings settings;
// if it's a new user
if(user_id.compare(settings.value(QZSettings::peloton_current_user_id, QZSettings::default_peloton_current_user_id).toString())) {
qDebug() << "new peloton user id, saving information...";
if(user_id.compare(settings.value(QZSettings::peloton_current_user_id, QZSettings::default_peloton_current_user_id).toString()) || !tempAccessToken.isEmpty()) {
qDebug() << "new peloton user id, saving information..." << user_id;
settings.setValue(QZSettings::peloton_current_user_id, user_id);
settings.setValue(getPelotonSettingKey(QZSettings::peloton_refreshtoken, user_id), settings.value(QZSettings::peloton_refreshtoken, QZSettings::default_peloton_refreshtoken).toString());
settings.setValue(getPelotonSettingKey(QZSettings::peloton_accesstoken, user_id), settings.value(QZSettings::peloton_accesstoken, QZSettings::default_peloton_accesstoken).toString());
if (!tempAccessToken.isEmpty()) {
savePelotonTokenForUser(QZSettings::peloton_accesstoken, tempAccessToken, user_id);
savePelotonTokenForUser(QZSettings::peloton_refreshtoken, tempRefreshToken, user_id);
savePelotonTokenForUser(QZSettings::peloton_expires, tempExpiresAt, user_id);
tempAccessToken.clear();
tempRefreshToken.clear();
qDebug() << "Assigned temporary tokens to new user:" << user_id;
if(homeform::singleton()) {
homeform::singleton()->setToastRequested("Welcome " + document[QStringLiteral("username")].toString());
}
} else {
settings.setValue(getPelotonSettingKey(QZSettings::peloton_refreshtoken, user_id), settings.value(QZSettings::peloton_refreshtoken, QZSettings::default_peloton_refreshtoken).toString());
settings.setValue(getPelotonSettingKey(QZSettings::peloton_accesstoken, user_id), settings.value(QZSettings::peloton_accesstoken, QZSettings::default_peloton_accesstoken).toString());
}
}
@@ -2007,15 +2019,20 @@ void peloton::onPelotonGranted() {
emit pelotonWebVisibleChanged(pelotonAuthWebVisible);
QSettings settings;
QString userId = settings.value(QZSettings::peloton_current_user_id).toString();
savePelotonTokenForUser(QZSettings::peloton_accesstoken, pelotonOAuth->token(), userId);
savePelotonTokenForUser(QZSettings::peloton_refreshtoken, pelotonOAuth->refreshToken(), userId);
savePelotonTokenForUser(QZSettings::peloton_lastrefresh, QDateTime::currentDateTime(), userId);
qDebug() << QStringLiteral("peloton authenticathed") << pelotonOAuth->token() << pelotonOAuth->refreshToken();
peloton_refreshtoken();
tempAccessToken = pelotonOAuth->token();
tempRefreshToken = pelotonOAuth->refreshToken();
tempExpiresAt = QDateTime::currentDateTime();
qDebug() << QStringLiteral("peloton authenticathed");
peloton_connect();
if(homeform::singleton())
homeform::singleton()->setPelotonPopupVisible(true);
if(!timer->isActive())
if(!timer->isActive()) {
peloton_credentials_wrong = false;
startEngine();
}
}
void peloton::onPelotonAuthorizeWithBrowser(const QUrl &url) {
@@ -2048,9 +2065,9 @@ void peloton::replyDataReceived(const QByteArray &v) {
QString userId = settings.value(QZSettings::peloton_current_user_id).toString();
QString s(v);
QJsonDocument jsonResponse = QJsonDocument::fromJson(s.toUtf8());
savePelotonTokenForUser(QZSettings::peloton_accesstoken, jsonResponse[QStringLiteral("access_token")], userId);
savePelotonTokenForUser(QZSettings::peloton_refreshtoken, jsonResponse[QStringLiteral("refresh_token")], userId);
savePelotonTokenForUser(QZSettings::peloton_expires, jsonResponse[QStringLiteral("expires_at")], userId);
tempAccessToken = jsonResponse[QStringLiteral("access_token")].toString();
tempRefreshToken = jsonResponse[QStringLiteral("refresh_token")].toString();
qDebug() << jsonResponse[QStringLiteral("access_token")] << jsonResponse[QStringLiteral("refresh_token")]
<< jsonResponse[QStringLiteral("expires_at")];
@@ -2113,9 +2130,9 @@ void peloton::networkRequestFinished(QNetworkReply *reply) {
access_token = document[QStringLiteral("access_token")].toString();
}
savePelotonTokenForUser(QZSettings::peloton_accesstoken, access_token, userId);
savePelotonTokenForUser(QZSettings::peloton_refreshtoken, refresh_token, userId);
savePelotonTokenForUser(QZSettings::peloton_lastrefresh, QDateTime::currentDateTime(), userId);
tempAccessToken = access_token;
tempRefreshToken = refresh_token;
tempExpiresAt = QDateTime::currentDateTime();
qDebug() << access_token << refresh_token;
@@ -2172,6 +2189,8 @@ QOAuth2AuthorizationCodeFlow *peloton::peloton_connect() {
}
void peloton::peloton_connect_clicked() {
timer->stop();
QLoggingCategory::setFilterRules(QStringLiteral("qt.networkauth.*=true"));
peloton_connect();
@@ -2218,13 +2237,13 @@ void peloton::peloton_refreshtoken() {
QNetworkRequest request(QUrl(QStringLiteral("https://auth.onepeloton.com/oauth/token?")));
request.setRawHeader("Content-Type", "application/x-www-form-urlencoded");
// set params
QString data;
data += QStringLiteral("client_id=" PELOTON_CLIENT_ID_S);
data += QStringLiteral("&refresh_token=") + getPelotonTokenForUser(QZSettings::peloton_refreshtoken, userId).toString();
data += QStringLiteral("&refresh_token=") + (tempRefreshToken.isEmpty() ? getPelotonTokenForUser(QZSettings::peloton_refreshtoken, userId).toString() : tempRefreshToken);
data += QStringLiteral("&grant_type=refresh_token");
// make request
if (manager) {
@@ -2265,10 +2284,10 @@ void peloton::peloton_refreshtoken() {
QString refresh_token = document[QStringLiteral("refresh_token")].toString();
qDebug() << "userid: " << userId;
savePelotonTokenForUser(QZSettings::peloton_accesstoken, access_token, userId);
savePelotonTokenForUser(QZSettings::peloton_refreshtoken, refresh_token, userId);
savePelotonTokenForUser(QZSettings::peloton_lastrefresh, QDateTime::currentDateTime(), userId);
tempAccessToken = access_token;
tempRefreshToken = refresh_token;
tempExpiresAt = QDateTime::currentDateTime();
homeform::singleton()->setToastRequested("Peloton Login OK!");
}

View File

@@ -124,6 +124,9 @@ class peloton : public QObject {
QSettings settings;
return settings.value(getPelotonSettingKey(baseKey, userId), defaultValue).toString();
}
QString tempAccessToken = QStringLiteral("");
QString tempRefreshToken = QStringLiteral("");
QDateTime tempExpiresAt;
// rowers
double rowerpaceToSpeed(double pace);