Cache prime/points widget (#20497)
* cache prime status on homescreen * use stacked widget * add caching and clear on 404pull/20494/head^2
parent
32330bbf89
commit
d43d625610
|
@ -16,6 +16,8 @@ cdef enum TxType:
|
|||
keys = {
|
||||
b"AccessToken": [TxType.CLEAR_ON_MANAGER_START],
|
||||
b"ApiCache_DriveStats": [TxType.PERSISTENT],
|
||||
b"ApiCache_Device": [TxType.PERSISTENT],
|
||||
b"ApiCache_Owner": [TxType.PERSISTENT],
|
||||
b"AthenadPid": [TxType.PERSISTENT],
|
||||
b"CalibrationParams": [TxType.PERSISTENT],
|
||||
b"CarBatteryCapacity": [TxType.PERSISTENT],
|
||||
|
|
|
@ -133,16 +133,18 @@ void RequestRepeater::requestFinished(){
|
|||
QString response = reply->readAll();
|
||||
if (reply->error() == QNetworkReply::NoError) {
|
||||
// save to cache
|
||||
if (!cache_key.isEmpty()) {
|
||||
Params().write_db_value(cache_key.toStdString(), response.toStdString());
|
||||
if (!cache_key.isEmpty()) {
|
||||
Params().write_db_value(cache_key.toStdString(), response.toStdString());
|
||||
}
|
||||
emit receivedResponse(response);
|
||||
} else {
|
||||
qDebug() << reply->errorString();
|
||||
if (!cache_key.isEmpty()) {
|
||||
Params().delete_db_value(cache_key.toStdString());
|
||||
}
|
||||
emit failedResponse(reply->errorString());
|
||||
}
|
||||
} else {
|
||||
emit failedResponse("network timeout");
|
||||
emit timeoutResponse("timeout");
|
||||
}
|
||||
reply->deleteLater();
|
||||
reply = NULL;
|
||||
|
|
|
@ -51,4 +51,5 @@ private slots:
|
|||
signals:
|
||||
void receivedResponse(QString response);
|
||||
void failedResponse(QString errorString);
|
||||
void timeoutResponse(QString errorString);
|
||||
};
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#include <QJsonObject>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QStackedLayout>
|
||||
#include <QStackedWidget>
|
||||
#include <QTimer>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
|
@ -107,7 +107,7 @@ PrimeUserWidget::PrimeUserWidget(QWidget* parent) : QWidget(parent) {
|
|||
|
||||
// TODO: only send the request when widget is shown
|
||||
QString url = "https://api.commadotai.com/v1/devices/" + dongleId + "/owner";
|
||||
RequestRepeater* repeater = new RequestRepeater(this, url, 6);
|
||||
RequestRepeater* repeater = new RequestRepeater(this, url, 6, "ApiCache_Owner");
|
||||
QObject::connect(repeater, SIGNAL(receivedResponse(QString)), this, SLOT(replyFinished(QString)));
|
||||
}
|
||||
|
||||
|
@ -156,7 +156,7 @@ PrimeAdWidget::PrimeAdWidget(QWidget* parent) : QWidget(parent) {
|
|||
|
||||
|
||||
SetupWidget::SetupWidget(QWidget* parent) : QFrame(parent) {
|
||||
mainLayout = new QStackedLayout;
|
||||
mainLayout = new QStackedWidget;
|
||||
|
||||
// Unpaired, registration prompt layout
|
||||
|
||||
|
@ -214,7 +214,12 @@ SetupWidget::SetupWidget(QWidget* parent) : QFrame(parent) {
|
|||
primeUser = new PrimeUserWidget;
|
||||
mainLayout->addWidget(primeUser);
|
||||
|
||||
setLayout(mainLayout);
|
||||
mainLayout->setCurrentWidget(primeAd);
|
||||
|
||||
QVBoxLayout *layout = new QVBoxLayout;
|
||||
layout->addWidget(mainLayout);
|
||||
setLayout(layout);
|
||||
|
||||
setStyleSheet(R"(
|
||||
SetupWidget {
|
||||
background-color: #292929;
|
||||
|
@ -226,16 +231,23 @@ SetupWidget::SetupWidget(QWidget* parent) : QFrame(parent) {
|
|||
}
|
||||
)");
|
||||
|
||||
// Retain size while hidden
|
||||
QSizePolicy sp_retain = sizePolicy();
|
||||
sp_retain.setRetainSizeWhenHidden(true);
|
||||
setSizePolicy(sp_retain);
|
||||
|
||||
// set up API requests
|
||||
QString dongleId = QString::fromStdString(Params().get("DongleId"));
|
||||
QString url = "https://api.commadotai.com/v1.1/devices/" + dongleId + "/";
|
||||
RequestRepeater* repeater = new RequestRepeater(this, url, 5);
|
||||
RequestRepeater* repeater = new RequestRepeater(this, url, 5, "ApiCache_Device");
|
||||
|
||||
QObject::connect(repeater, SIGNAL(receivedResponse(QString)), this, SLOT(replyFinished(QString)));
|
||||
QObject::connect(repeater, SIGNAL(failedResponse(QString)), this, SLOT(parseError(QString)));
|
||||
hide(); // Only show when first request comes back
|
||||
}
|
||||
|
||||
void SetupWidget::parseError(QString response) {
|
||||
show();
|
||||
showQr = false;
|
||||
mainLayout->setCurrentIndex(0);
|
||||
}
|
||||
|
@ -246,6 +258,7 @@ void SetupWidget::showQrCode(){
|
|||
}
|
||||
|
||||
void SetupWidget::replyFinished(QString response) {
|
||||
show();
|
||||
QJsonDocument doc = QJsonDocument::fromJson(response.toUtf8());
|
||||
if (doc.isNull()) {
|
||||
qDebug() << "JSON Parse failed on getting pairing and prime status";
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
#pragma once
|
||||
|
||||
#include <QLabel>
|
||||
#include <QStackedLayout>
|
||||
#include <QStackedWidget>
|
||||
#include <QVBoxLayout>
|
||||
#include <QWidget>
|
||||
|
||||
#include "api.hpp"
|
||||
|
@ -48,7 +49,7 @@ public:
|
|||
explicit SetupWidget(QWidget* parent = 0);
|
||||
|
||||
private:
|
||||
QStackedLayout* mainLayout;
|
||||
QStackedWidget* mainLayout;
|
||||
CommaApi* api;
|
||||
PrimeAdWidget *primeAd;
|
||||
PrimeUserWidget *primeUser;
|
||||
|
|
Loading…
Reference in New Issue