fix: add timeout to network link device slot
Change-Id: I2bb7b2e19c393a0c9523a3719f2c11b3bf94dbde
Reviewed-by: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
diff --git a/linkdevwidget.cpp b/linkdevwidget.cpp
index 4315971..8d89bad 100644
--- a/linkdevwidget.cpp
+++ b/linkdevwidget.cpp
@@ -19,6 +19,7 @@
#include "linkdevwidget.h"
#include <QMovie>
+#include <QTimer>
LinkDevWidget::LinkDevWidget(QWidget* parent)
: QWidget(parent),
@@ -32,9 +33,10 @@
setGeneratingPage();
}
- connect(ui->enterBtn, &QPushButton::clicked, this, &LinkDevWidget::setGeneratingPage);
+ connect(ui->enterBtn, &QPushButton::clicked,
+ this, &LinkDevWidget::setGeneratingPage);
connect(&LRCInstance::accountModel(), &lrc::api::NewAccountModel::exportOnRingEnded,
- this, &LinkDevWidget::setExportPage);
+ this, &LinkDevWidget::setExportPage);
}
LinkDevWidget::~LinkDevWidget()
@@ -52,6 +54,17 @@
ui->spinningLabel->show();
movie->start();
+ timeout_ = new QTimer(this);
+ timeout_->setInterval(exportTimeout_);
+ timeout_->setSingleShot(true);
+ connect(timeout_, &QTimer::timeout, this,
+ [&]() {
+ setExportPage(std::string(),
+ lrc::api::account::ExportOnRingStatus::NETWORK_ERROR,
+ std::string());
+ });
+ timeout_->start();
+
LRCInstance::accountModel().exportOnRing(LRCInstance::getCurrAccId(), ui->passwordLineEdit->text().toStdString());
}
@@ -59,6 +72,8 @@
LinkDevWidget::setExportPage(const std::string& accountId, lrc::api::account::ExportOnRingStatus status, const std::string& pin)
{
Q_UNUSED(accountId);
+ timeout_->stop();
+
ui->stackedWidget->setCurrentWidget(ui->end);
switch (status) {
@@ -73,6 +88,7 @@
break;
default:
+ disconnect();
ui->label_4->setText(tr("Something went wrong.\nPlease try again later."));
ui->label_5->hide();
ui->label_6->hide();