mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-02 03:23:56 -07:00
Dependency Injection for SettingsCache
* Turn SettingsCache into a QSharedPointer. * Implement interfaces for settings that need it Took 2 hours 38 minutes
This commit is contained in:
parent
b773909dfd
commit
35d18b5fa9
127 changed files with 1012 additions and 803 deletions
|
|
@ -1,9 +1,9 @@
|
|||
#include "remote_client.h"
|
||||
|
||||
#include "../../../../cockatrice/src/main.h"
|
||||
#include "../../interfaces/INetworkSettingsProvider.h"
|
||||
#include "version_string.h"
|
||||
|
||||
#include <../../../../../cockatrice/src/client/settings/cache_settings.h>
|
||||
#include <QCryptographicHash>
|
||||
#include <QDebug>
|
||||
#include <QHostAddress>
|
||||
|
|
@ -26,14 +26,14 @@
|
|||
|
||||
static const unsigned int protocolVersion = 14;
|
||||
|
||||
RemoteClient::RemoteClient(QObject *parent)
|
||||
: AbstractClient(parent), timeRunning(0), lastDataReceived(0), messageInProgress(false), handshakeStarted(false),
|
||||
usingWebSocket(false), messageLength(0), hashedPassword()
|
||||
RemoteClient::RemoteClient(QObject *parent, QSharedPointer<INetworkSettingsProvider> _networkSettingsProvider)
|
||||
: AbstractClient(parent), networkSettingsProvider(_networkSettingsProvider), timeRunning(0), lastDataReceived(0),
|
||||
messageInProgress(false), handshakeStarted(false), usingWebSocket(false), messageLength(0), hashedPassword()
|
||||
{
|
||||
|
||||
clearNewClientFeatures();
|
||||
maxTimeout = SettingsCache::instance().getTimeOut();
|
||||
int keepalive = SettingsCache::instance().getKeepAlive();
|
||||
maxTimeout = networkSettingsProvider->getTimeOut();
|
||||
int keepalive = networkSettingsProvider->getKeepAlive();
|
||||
timer = new QTimer(this);
|
||||
timer->setInterval(keepalive * 1000);
|
||||
connect(timer, &QTimer::timeout, this, &RemoteClient::ping);
|
||||
|
|
@ -308,8 +308,8 @@ void RemoteClient::loginResponse(const Response &response)
|
|||
emit ignoreListReceived(ignoreList);
|
||||
|
||||
if (newMissingFeatureFound(possibleMissingFeatures) && resp.missing_features_size() > 0 &&
|
||||
SettingsCache::instance().getNotifyAboutUpdates()) {
|
||||
SettingsCache::instance().setKnownMissingFeatures(possibleMissingFeatures);
|
||||
networkSettingsProvider->getNotifyAboutUpdates()) {
|
||||
networkSettingsProvider->setKnownMissingFeatures(possibleMissingFeatures);
|
||||
emit notifyUserAboutUpdate();
|
||||
}
|
||||
|
||||
|
|
@ -586,7 +586,7 @@ void RemoteClient::disconnectFromServer()
|
|||
|
||||
QString RemoteClient::getSrvClientID(const QString &_hostname)
|
||||
{
|
||||
QString srvClientID = SettingsCache::instance().getClientID();
|
||||
QString srvClientID = networkSettingsProvider->getClientID();
|
||||
QHostInfo hostInfo = QHostInfo::fromName(_hostname);
|
||||
if (!hostInfo.error()) {
|
||||
QHostAddress hostAddress = hostInfo.addresses().first();
|
||||
|
|
@ -606,7 +606,7 @@ bool RemoteClient::newMissingFeatureFound(const QString &_serversMissingFeatures
|
|||
QStringList serversMissingFeaturesList = _serversMissingFeatures.split(",");
|
||||
for (const QString &feature : serversMissingFeaturesList) {
|
||||
if (!feature.isEmpty()) {
|
||||
if (!SettingsCache::instance().getKnownMissingFeatures().contains(feature))
|
||||
if (!networkSettingsProvider->getKnownMissingFeatures().contains(feature))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -616,14 +616,14 @@ bool RemoteClient::newMissingFeatureFound(const QString &_serversMissingFeatures
|
|||
void RemoteClient::clearNewClientFeatures()
|
||||
{
|
||||
QString newKnownMissingFeatures;
|
||||
QStringList existingKnownMissingFeatures = SettingsCache::instance().getKnownMissingFeatures().split(",");
|
||||
QStringList existingKnownMissingFeatures = networkSettingsProvider->getKnownMissingFeatures().split(",");
|
||||
for (const QString &existingKnownFeature : existingKnownMissingFeatures) {
|
||||
if (!existingKnownFeature.isEmpty()) {
|
||||
if (!clientFeatures.contains(existingKnownFeature))
|
||||
newKnownMissingFeatures.append("," + existingKnownFeature);
|
||||
}
|
||||
}
|
||||
SettingsCache::instance().setKnownMissingFeatures(newKnownMissingFeatures);
|
||||
networkSettingsProvider->setKnownMissingFeatures(newKnownMissingFeatures);
|
||||
}
|
||||
|
||||
void RemoteClient::requestForgotPasswordToServer(const QString &hostname, unsigned int port, const QString &_userName)
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
#ifndef REMOTECLIENT_H
|
||||
#define REMOTECLIENT_H
|
||||
|
||||
#include "../../interfaces/INetworkSettingsProvider.h"
|
||||
#include "../abstract/abstract_client.h"
|
||||
|
||||
#include <QLoggingCategory>
|
||||
|
|
@ -97,6 +98,7 @@ private slots:
|
|||
void submitForgotPasswordChallengeResponse(const Response &response);
|
||||
|
||||
private:
|
||||
QSharedPointer<INetworkSettingsProvider> networkSettingsProvider;
|
||||
int maxTimeout;
|
||||
int timeRunning, lastDataReceived;
|
||||
QByteArray inputBuffer;
|
||||
|
|
@ -120,7 +122,8 @@ protected slots:
|
|||
void sendCommandContainer(const CommandContainer &cont) override;
|
||||
|
||||
public:
|
||||
explicit RemoteClient(QObject *parent = nullptr);
|
||||
explicit RemoteClient(QObject *parent = nullptr,
|
||||
QSharedPointer<INetworkSettingsProvider> networkSettingsProvider = nullptr);
|
||||
~RemoteClient() override;
|
||||
QString peerName() const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
#ifndef COCKATRICE_INETWORKSETTINGSPROVIDER_H
|
||||
#define COCKATRICE_INETWORKSETTINGSPROVIDER_H
|
||||
#include <QString>
|
||||
|
||||
class INetworkSettingsProvider
|
||||
{
|
||||
public:
|
||||
virtual ~INetworkSettingsProvider() = default;
|
||||
|
||||
virtual QString getClientID() = 0;
|
||||
|
||||
virtual int getTimeOut() const = 0;
|
||||
virtual int getKeepAlive() const = 0;
|
||||
virtual bool getNotifyAboutUpdates() const = 0;
|
||||
|
||||
virtual void setKnownMissingFeatures(const QString &_knownMissingFeatures) = 0;
|
||||
virtual QString getKnownMissingFeatures() = 0;
|
||||
};
|
||||
|
||||
#endif // COCKATRICE_INETWORKSETTINGSPROVIDER_H
|
||||
Loading…
Add table
Add a link
Reference in a new issue