From a054f6c9d7fc1d31da91ebc6a92bd2e9a6fbe3f4 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Wed, 22 Nov 2017 15:46:15 +0100 Subject: [PATCH] implement setName functionality --- libguh-core/awsconnector.cpp | 36 ++++++++++++++++++++++++++++---- libguh-core/awsconnector.h | 6 +++++- libguh-core/cloudmanager.cpp | 1 + libguh-core/guhconfiguration.cpp | 2 +- libguh-core/guhconfiguration.h | 2 +- libguh-core/guhcore.cpp | 1 + 6 files changed, 41 insertions(+), 7 deletions(-) diff --git a/libguh-core/awsconnector.cpp b/libguh-core/awsconnector.cpp index c1ebc3ee..cf89bb84 100644 --- a/libguh-core/awsconnector.cpp +++ b/libguh-core/awsconnector.cpp @@ -114,8 +114,8 @@ void AWSConnector::onConnected() } qCDebug(dcAWS()) << "AWS connected. Device already registered in cloud."; - // OK, we're registerd already, go straight to pairing setup - setupPairing(); + // OK, we're registerd already, go straight to subscription setup + setupSubscriptions(); } void AWSConnector::registerDevice() @@ -146,13 +146,14 @@ void AWSConnector::onDeviceRegistered(bool needsReconnect) return; } - setupPairing(); + setupSubscriptions(); } -void AWSConnector::setupPairing() +void AWSConnector::setupSubscriptions() { // Subscribe to pairing info topics QStringList subscriptions; + subscriptions.append(QString("%1/device/name/response").arg(m_clientId)); subscriptions.append(QString("%1/device/users/response").arg(m_clientId)); subscriptions.append(QString("%1/pair/response").arg(m_clientId)); subscribe(subscriptions); @@ -178,6 +179,10 @@ void AWSConnector::onPairingsRetrieved(const QVariantList &pairings) } subscribe(topics); + if (!readNameSyncedFlag()) { + setName(); + } + m_setupInProgress = false; emit connected(); } @@ -199,6 +204,17 @@ bool AWSConnector::isConnected() const return m_connectingFuture.isFinished() && m_networkConnection && m_client && m_client->IsConnected(); } +void AWSConnector::setDeviceName(const QString &deviceName) +{ + if (m_clientName != deviceName) { + m_clientName = deviceName; + storeNameSyncedFlag(false); + if (isConnected()) { + setName(); + } + } +} + void AWSConnector::pairDevice(const QString &idToken, const QString &userId) { QVariantMap map; @@ -432,3 +448,15 @@ bool AWSConnector::readRegisteredFlag() const QSettings settings(GuhSettings::storagePath() + "/cloudstatus.conf", QSettings::IniFormat); return settings.value("registered", false).toBool(); } + +void AWSConnector::storeNameSyncedFlag(bool synced) +{ + QSettings settings(GuhSettings::storagePath() + "/cloudstatus.conf", QSettings::IniFormat); + settings.setValue("nameSynced", synced); +} + +bool AWSConnector::readNameSyncedFlag() +{ + QSettings settings(GuhSettings::storagePath() + "/cloudstatus.conf", QSettings::IniFormat); + return settings.value("nameSynced", false).toBool(); +} diff --git a/libguh-core/awsconnector.h b/libguh-core/awsconnector.h index bf6cfd30..26d8e3fb 100644 --- a/libguh-core/awsconnector.h +++ b/libguh-core/awsconnector.h @@ -43,6 +43,7 @@ public: void disconnectAWS(); bool isConnected() const; + void setDeviceName(const QString &deviceName); void pairDevice(const QString &idToken, const QString &userId); void sendWebRtcHandshakeMessage(const QString &sessionId, const QVariantMap &map); @@ -58,7 +59,7 @@ private slots: void onConnected(); void registerDevice(); void onDeviceRegistered(bool needsReconnect); - void setupPairing(); + void setupSubscriptions(); void fetchPairings(); void onPairingsRetrieved(const QVariantList &pairings); void setName(); @@ -89,6 +90,9 @@ private: void storeRegisteredFlag(bool registered); bool readRegisteredFlag() const; + void storeNameSyncedFlag(bool synced); + bool readNameSyncedFlag(); + private: std::shared_ptr m_networkConnection; std::shared_ptr m_client; diff --git a/libguh-core/cloudmanager.cpp b/libguh-core/cloudmanager.cpp index f124882e..cf9f47d1 100644 --- a/libguh-core/cloudmanager.cpp +++ b/libguh-core/cloudmanager.cpp @@ -56,6 +56,7 @@ void CloudManager::setDeviceId(const QUuid &deviceId) void CloudManager::setDeviceName(const QString &name) { m_deviceName = name; + m_awsConnector->setDeviceName(name); } void CloudManager::setClientCertificates(const QString &caCertificate, const QString &clientCertificate, const QString &clientCertificateKey) diff --git a/libguh-core/guhconfiguration.cpp b/libguh-core/guhconfiguration.cpp index f25ff6cc..585bff42 100644 --- a/libguh-core/guhconfiguration.cpp +++ b/libguh-core/guhconfiguration.cpp @@ -183,7 +183,7 @@ void GuhConfiguration::setServerName(const QString &serverName) } else { settings.setValue("name", serverName); settings.endGroup(); - emit serverNameChanged(); + emit serverNameChanged(serverName); } } diff --git a/libguh-core/guhconfiguration.h b/libguh-core/guhconfiguration.h index 340e092d..43e5f6c2 100644 --- a/libguh-core/guhconfiguration.h +++ b/libguh-core/guhconfiguration.h @@ -135,7 +135,7 @@ private: WebServerConfiguration readWebServerConfig(const QString &id); signals: - void serverNameChanged(); + void serverNameChanged(const QString &serverName); void timeZoneChanged(); void localeChanged(); diff --git a/libguh-core/guhcore.cpp b/libguh-core/guhcore.cpp index 290a84dd..7f4bc677 100644 --- a/libguh-core/guhcore.cpp +++ b/libguh-core/guhcore.cpp @@ -458,6 +458,7 @@ void GuhCore::init() { connect(m_configuration, &GuhConfiguration::localeChanged, this, &GuhCore::onLocaleChanged); connect(m_configuration, &GuhConfiguration::cloudEnabledChanged, m_cloudManager, &CloudManager::setEnabled); + connect(m_configuration, &GuhConfiguration::serverNameChanged, m_cloudManager, &CloudManager::setDeviceName); connect(m_deviceManager, &DeviceManager::pluginConfigChanged, this, &GuhCore::pluginConfigChanged); connect(m_deviceManager, &DeviceManager::eventTriggered, this, &GuhCore::gotEvent);