summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Andreas <github@smurfy.de>2015-10-10 20:01:37 +0200
committerPhilipp Andreas <github@smurfy.de>2015-10-10 20:01:37 +0200
commit8bee022b0ff7659cb5b0bd35febae09826d8d298 (patch)
tree1ed80ecede0876ed7b5e1f85cac5914b24abeecf
parentdff2ba6143d68515f884753e9cc81cdf7ed0eca1 (diff)
Added support for pebble-time appstore fixes #79
-rw-r--r--app/pebblestoreview.cpp38
-rw-r--r--app/pebblestoreview.h6
-rw-r--r--app/qml/pages/AppStorePage.qml1
-rw-r--r--daemon/watchconnector.cpp13
-rw-r--r--daemon/watchconnector.h1
5 files changed, 54 insertions, 5 deletions
diff --git a/app/pebblestoreview.cpp b/app/pebblestoreview.cpp
index 717eff3..17d690f 100644
--- a/app/pebblestoreview.cpp
+++ b/app/pebblestoreview.cpp
@@ -11,8 +11,18 @@ PebbleStoreView::PebbleStoreView()
this->m_networkManager = new QNetworkAccessManager(this);
connect(this->m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onNetworkReplyFinished(QNetworkReply*)));
+}
+
+void PebbleStoreView::fetchConfig()
+{
+ qDebug()<<this->m_hardwarePlatform;
+
+ if (this->m_hardwarePlatform == "aplite") {
+ this->m_configUrl = QUrl("https://boot.getpebble.com/api/config/android/v1/3");
+ } else {
+ this->m_configUrl = QUrl("https://boot.getpebble.com/api/config/android/v3/1?app_version=3.4.0");
+ }
- this->m_configUrl = QUrl("https://boot.getpebble.com/api/config/android/v1/3");
this->m_downloadInProgress = false;
emit downloadInProgressChanged();
@@ -31,10 +41,25 @@ void PebbleStoreView::setAccessToken(const QString &accessToken)
emit accessTokenChanged(accessToken);
}
+QString PebbleStoreView::hardwarePlatform() const
+{
+ return this->m_hardwarePlatform;
+}
+
+void PebbleStoreView::setHardwarePlatform(const QString &hardwarePlatform)
+{
+ this->m_hardwarePlatform = hardwarePlatform;
+ emit hardwarePlatformChanged(hardwarePlatform);
+
+ //We need to refetch the config after a platform change
+ this->fetchConfig();
+}
+
+
void PebbleStoreView::logout()
{
setAccessToken("");
- setUrl(prepareUrl(this->storeConfigObject.value("webviews").toObject().value("authentication").toString()));
+ setUrl(prepareUrl(this->storeConfigObject.value("webviews").toObject().value("authentication/sign_in").toString()));
}
bool PebbleStoreView::loggedin()
@@ -128,7 +153,7 @@ void PebbleStoreView::onNetworkReplyFinished(QNetworkReply* reply)
this->storeConfigObject = jsonObject.value("config").toObject();
if (this->m_accessToken.isEmpty()) {
- setUrl(prepareUrl(this->storeConfigObject.value("webviews").toObject().value("authentication").toString()));
+ setUrl(prepareUrl(this->storeConfigObject.value("webviews").toObject().value("authentication/sign_in").toString()));
} else {
setUrl(prepareUrl(this->storeConfigObject.value("webviews").toObject().value("onboarding/get_some_apps").toString()));
}
@@ -164,9 +189,12 @@ void PebbleStoreView::onNetworkReplyFinished(QNetworkReply* reply)
QUrl PebbleStoreView::prepareUrl(QString baseUrl)
{
baseUrl = baseUrl.replace("$$user_id$$", "ZZZ");
- baseUrl = baseUrl.replace("$$phone_id$$", "XXX");
- baseUrl = baseUrl.replace("$$pebble_id$$", "YYY");
+ baseUrl = baseUrl.replace("$$phone_id$$", "XXX"); //Unique phone id
+ baseUrl = baseUrl.replace("$$pebble_id$$", "YYY"); //official APP puts serial here
+ baseUrl = baseUrl.replace("$$pebble_color$$", "64");
+ baseUrl = baseUrl.replace("$$hardware$$", this->m_hardwarePlatform);
baseUrl = baseUrl.replace("$$access_token$$", this->m_accessToken);
+ baseUrl = baseUrl.replace("$$extras$$", "");
qDebug()<<baseUrl;
diff --git a/app/pebblestoreview.h b/app/pebblestoreview.h
index 551b863..24b7807 100644
--- a/app/pebblestoreview.h
+++ b/app/pebblestoreview.h
@@ -16,11 +16,14 @@ public:
Q_PROPERTY(bool loggedin READ loggedin NOTIFY accessTokenChanged)
Q_PROPERTY(bool downloadInProgress READ downloadInProgress NOTIFY downloadInProgressChanged)
Q_PROPERTY(QString accessToken READ accessToken WRITE setAccessToken NOTIFY accessTokenChanged)
+ Q_PROPERTY(QString hardwarePlatform READ hardwarePlatform WRITE setHardwarePlatform NOTIFY hardwarePlatformChanged)
bool loggedin();
bool downloadInProgress();
QString accessToken() const;
void setAccessToken(const QString &accessToken);
+ QString hardwarePlatform() const;
+ void setHardwarePlatform(const QString &hardwarePlatform);
public slots:
void gotoWatchFaces();
@@ -34,6 +37,7 @@ private slots:
signals:
void accessTokenChanged(const QString & accessToken);
+ void hardwarePlatformChanged(const QString & hardwarePlatform);
void downloadPebbleApp(const QString & downloadTitle, const QString & downloadUrl);
void downloadInProgressChanged();
void titleChanged(const QString & title);
@@ -42,11 +46,13 @@ private:
QNetworkAccessManager* m_networkManager;
QUrl m_configUrl;
QString m_accessToken;
+ QString m_hardwarePlatform;
QJsonObject downloadObject;
QJsonObject storeConfigObject;
bool m_downloadInProgress;
QUrl prepareUrl(QString baseUrl);
+ void fetchConfig();
void fetchData(QUrl url);
void addToLocker(QJsonObject data);
void removeFromLocker(QJsonObject data);
diff --git a/app/qml/pages/AppStorePage.qml b/app/qml/pages/AppStorePage.qml
index 4993b1b..58e854d 100644
--- a/app/qml/pages/AppStorePage.qml
+++ b/app/qml/pages/AppStorePage.qml
@@ -134,6 +134,7 @@ Page {
}
accessToken: settings.storeAccessToken
+ hardwarePlatform: pebbled.info.platform
onAccessTokenChanged: {
settings.storeAccessToken = accessToken;
diff --git a/daemon/watchconnector.cpp b/daemon/watchconnector.cpp
index 2890712..5961913 100644
--- a/daemon/watchconnector.cpp
+++ b/daemon/watchconnector.cpp
@@ -53,6 +53,7 @@ QVariantMap WatchConnector::WatchVersions::toMap() const
map.insert("bootloader", this->bootLoaderBuild.toTime_t());
map.insert("serial", this->serialNumber);
map.insert("address", this->address.toHex());
+ map.insert("platform", this->hardwarePlatform);
map.insertMulti("firmware", this->main.toMap());
map.insertMulti("firmware", this->safe.toMap());
}
@@ -126,6 +127,18 @@ WatchConnector::WatchConnector(QObject *parent) :
platform = hardwareMapping.value(_versions.safe.hw_revision).first;
+ switch (this->platform) {
+ case APLITE:
+ _versions.hardwarePlatform = "aplite";
+ break;
+ case BASALT:
+ _versions.hardwarePlatform = "basalt";
+ break;
+ case CHALK:
+ _versions.hardwarePlatform = "chalk";
+ break;
+ }
+
if (u.bad()) {
qCWarning(l) << "short read while reading firmware version";
} else {
diff --git a/daemon/watchconnector.h b/daemon/watchconnector.h
index 27555a3..83e065c 100644
--- a/daemon/watchconnector.h
+++ b/daemon/watchconnector.h
@@ -197,6 +197,7 @@ public:
SoftwareVersion safe;
QDateTime bootLoaderBuild;
QString hardwareRevision;
+ QString hardwarePlatform;
QString serialNumber;
QByteArray address;