summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-10-05 13:47:11 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-10-05 13:47:11 -0400
commite7cc4774e1a7d03fb0710875f6a91ec703b0005e (patch)
tree3f9e70411c528986ba2a814ff86f78f95a818c63 /src
parent8269ac1b489d30ca6065ec2b97542ddbb22298b3 (diff)
don't show the progress dialog on startup until after the first failure
Diffstat (limited to 'src')
-rw-r--r--src/nxmaccessmanager.cpp45
-rw-r--r--src/nxmaccessmanager.h4
2 files changed, 47 insertions, 2 deletions
diff --git a/src/nxmaccessmanager.cpp b/src/nxmaccessmanager.cpp
index 99b93048..5d8b8b9e 100644
--- a/src/nxmaccessmanager.cpp
+++ b/src/nxmaccessmanager.cpp
@@ -702,13 +702,21 @@ bool NexusKeyValidator::nextTry()
}
void NexusKeyValidator::onAttemptSuccess(
- const ValidationAttempt&, const APIUserAccount& u)
+ const ValidationAttempt& a, const APIUserAccount& u)
{
+ if (attemptFinished) {
+ attemptFinished(a);
+ }
+
setFinished(ValidationAttempt::Success, "", u);
}
void NexusKeyValidator::onAttemptFailure(const ValidationAttempt& a)
{
+ if (attemptFinished) {
+ attemptFinished(a);
+ }
+
switch (a.result())
{
case ValidationAttempt::SoftError:
@@ -755,6 +763,10 @@ NXMAccessManager::NXMAccessManager(QObject *parent, const QString &moVersion)
onValidatorFinished(r, m, u);
};
+ m_validator.attemptFinished = [&](auto&& a) {
+ onValidatorAttemptFinished(a);
+ };
+
setCookieJar(new PersistentCookieJar(QDir::fromNativeSeparators(
Settings::instance().paths().cache() + "/nexus_cookies.dat")));
@@ -820,7 +832,12 @@ void NXMAccessManager::startValidationCheck(const QString& key)
{
m_validationState = NotChecked;
m_validator.start(key, NexusKeyValidator::Retry);
- startProgress();
+
+ if (m_ProgressDialog) {
+ // don't show the progress dialog on startup for the first attempt; the
+ // dialog will be shown in onValidatorAttemptFinished() if it failed
+ startProgress();
+ }
}
void NXMAccessManager::onValidatorFinished(
@@ -843,6 +860,30 @@ void NXMAccessManager::onValidatorFinished(
}
}
+void NXMAccessManager::onValidatorAttemptFinished(const ValidationAttempt& a)
+{
+ if (!m_ProgressDialog) {
+ switch (a.result())
+ {
+ case ValidationAttempt::SoftError:
+ case ValidationAttempt::HardError:
+ {
+ startProgress();
+ break;
+ }
+
+ case ValidationAttempt::None:
+ case ValidationAttempt::Success:
+ case ValidationAttempt::Cancelled:
+ default:
+ {
+ // don't show the dialog
+ break;
+ }
+ }
+ }
+}
+
bool NXMAccessManager::validated() const
{
if (m_validator.isActive()) {
diff --git a/src/nxmaccessmanager.h b/src/nxmaccessmanager.h
index b0ea45e7..6a45d880 100644
--- a/src/nxmaccessmanager.h
+++ b/src/nxmaccessmanager.h
@@ -144,6 +144,7 @@ public:
std::optional<APIUserAccount>);
std::function<FinishedCallback> finished;
+ std::function<void (const ValidationAttempt&)> attemptFinished;
NexusKeyValidator(NXMAccessManager& am);
~NexusKeyValidator();
@@ -269,10 +270,13 @@ private:
States m_validationState;
void startValidationCheck(const QString& key);
+
void onValidatorFinished(
ValidationAttempt::Result r, const QString& message,
std::optional<APIUserAccount>);
+ void onValidatorAttemptFinished(const ValidationAttempt& a);
+
void startProgress();
void stopProgress();
};