summaryrefslogtreecommitdiff
path: root/src/nxmaccessmanager.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2020-08-17 05:06:26 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2020-11-03 11:39:08 -0500
commit4c5e3da2334a1d0c474148be8881b46d6ca6d3fa (patch)
tree188be5f54644cc5e432f957fe5bf406d372e5e80 /src/nxmaccessmanager.cpp
parentee53312652af10fbddb5d1d16db6212bca2b9665 (diff)
moved nexus api stuff to GlobalSettings
pass a pointer to Settings around for things that can be called without settings, when creating the first instance added dummy plugin list, mod list and iorganizer to initialize plugins without an instance moved PluginContainer into the core filter, had nothing to do with the plugins list NexusInterface is now created manually instead of being a static singleton because it needs to know if the settings are available
Diffstat (limited to 'src/nxmaccessmanager.cpp')
-rw-r--r--src/nxmaccessmanager.cpp37
1 files changed, 26 insertions, 11 deletions
diff --git a/src/nxmaccessmanager.cpp b/src/nxmaccessmanager.cpp
index 2fe676ba..6c8b9054 100644
--- a/src/nxmaccessmanager.cpp
+++ b/src/nxmaccessmanager.cpp
@@ -48,8 +48,8 @@ const QString NexusSSO("wss://sso.nexusmods.com");
const QString NexusSSOPage("https://www.nexusmods.com/sso?id=%1&application=modorganizer2");
-ValidationProgressDialog::ValidationProgressDialog(NexusKeyValidator& v)
- : m_validator(v), m_updateTimer(nullptr), m_first(true)
+ValidationProgressDialog::ValidationProgressDialog(Settings* s, NexusKeyValidator& v)
+ : m_settings(s), m_validator(v), m_updateTimer(nullptr), m_first(true)
{
ui.reset(new Ui::ValidationProgressDialog);
ui->setupUi(this);
@@ -98,7 +98,10 @@ void ValidationProgressDialog::stop()
void ValidationProgressDialog::showEvent(QShowEvent* e)
{
if (m_first) {
- Settings::instance().geometry().centerOnMainWindowMonitor(this);
+ if (m_settings) {
+ m_settings->geometry().centerOnMainWindowMonitor(this);
+ }
+
m_first = false;
}
}
@@ -592,8 +595,8 @@ void ValidationAttempt::cleanup()
}
-NexusKeyValidator::NexusKeyValidator(NXMAccessManager& am)
- : m_manager(am)
+NexusKeyValidator::NexusKeyValidator(Settings* s, NXMAccessManager& am)
+ : m_settings(s), m_manager(am)
{
}
@@ -602,6 +605,15 @@ NexusKeyValidator::~NexusKeyValidator()
cancel();
}
+std::vector<std::chrono::seconds> NexusKeyValidator::getTimeouts() const
+{
+ if (m_settings) {
+ return m_settings->nexus().validationTimeouts();
+ } else {
+ return {10s, 15s, 20s};
+ }
+}
+
void NexusKeyValidator::start(const QString& key, Behaviour b)
{
if (isActive()) {
@@ -611,7 +623,7 @@ void NexusKeyValidator::start(const QString& key, Behaviour b)
m_key = key;
- const auto timeouts = Settings::instance().nexus().validationTimeouts();
+ const auto timeouts = getTimeouts();
switch (b)
{
@@ -755,10 +767,11 @@ void NexusKeyValidator::setFinished(
}
-NXMAccessManager::NXMAccessManager(QObject *parent, const QString &moVersion)
+NXMAccessManager::NXMAccessManager(QObject *parent, Settings* s, const QString &moVersion)
: QNetworkAccessManager(parent)
+ , m_Settings(s)
, m_MOVersion(moVersion)
- , m_validator(*this)
+ , m_validator(s, *this)
, m_validationState(NotChecked)
{
m_validator.finished = [&](auto&& r, auto&& m, auto&& u) {
@@ -769,8 +782,10 @@ NXMAccessManager::NXMAccessManager(QObject *parent, const QString &moVersion)
onValidatorAttemptFinished(a);
};
- setCookieJar(new PersistentCookieJar(QDir::fromNativeSeparators(
- Settings::instance().paths().cache() + "/nexus_cookies.dat")));
+ if (m_Settings) {
+ setCookieJar(new PersistentCookieJar(QDir::fromNativeSeparators(
+ m_Settings->paths().cache() + "/nexus_cookies.dat")));
+ }
if (networkAccessible() == QNetworkAccessManager::UnknownAccessibility) {
// why is this necessary all of a sudden?
@@ -963,7 +978,7 @@ void NXMAccessManager::clearApiKey()
void NXMAccessManager::startProgress()
{
if (!m_ProgressDialog) {
- m_ProgressDialog.reset(new ValidationProgressDialog(m_validator));
+ m_ProgressDialog.reset(new ValidationProgressDialog(m_Settings, m_validator));
}
m_ProgressDialog->start();