Netatmo: fixed plugin storage

master
bernhard.trinnes 2020-04-01 11:06:30 +02:00
parent 55ce83011f
commit 395ed511cf
2 changed files with 19 additions and 12 deletions

View File

@ -66,8 +66,12 @@ void IntegrationPluginNetatmo::confirmPairing(ThingPairingInfo *info, const QStr
authentication->setScope("read_station read_thermostat write_thermostat");
// Update thing connected state based on OAuth connected state
connect(authentication, &OAuth2::authenticationChanged, info, [info, authentication](){
connect(authentication, &OAuth2::authenticationChanged, info, [this, info, username, password, authentication](){
if (authentication->authenticated()) {
pluginStorage()->beginGroup(info->thingId().toString());
pluginStorage()->setValue("username", username);
pluginStorage()->setValue("password", password);
pluginStorage()->endGroup();
info->finish(Thing::ThingErrorNoError);
} else {
info->finish(Thing::ThingErrorAuthenticationFailure, "Wrong username of password");
@ -92,17 +96,28 @@ void IntegrationPluginNetatmo::setupThing(ThingSetupInfo *info)
QString username;
QString password;
ParamTypeId usernameParamTypeId = ParamTypeId("763c2c10-dee5-41c8-9f7e-ded741945e73");
ParamTypeId passwordParamTypeId = ParamTypeId("c0d892d6-f359-4782-9d7d-8f74a3b53e3e");
if (pluginStorage()->childGroups().contains(thing->id().toString())) {
pluginStorage()->beginGroup(thing->id().toString());
username = pluginStorage()->value("username").toString();
password = pluginStorage()->value("password").toString();
pluginStorage()->endGroup();
} else {
/* username and password have been stored as thingParams,
* this is to migrate the params to plug-in storage. */
ParamTypeId usernameParamTypeId = ParamTypeId("763c2c10-dee5-41c8-9f7e-ded741945e73");
ParamTypeId passwordParamTypeId = ParamTypeId("c0d892d6-f359-4782-9d7d-8f74a3b53e3e");
username = thing->paramValue(usernameParamTypeId).toString();
password = thing->paramValue(passwordParamTypeId).toString();
pluginStorage()->beginGroup(info->thing()->id().toString());
pluginStorage()->setValue("username", username);
pluginStorage()->setValue("password", password);
pluginStorage()->endGroup();
// Delete username and password so it wont be visible in the things.conf file.
thing->setParamValue(ParamTypeId("763c2c10-dee5-41c8-9f7e-ded741945e73"), "");
thing->setParamValue(ParamTypeId("c0d892d6-f359-4782-9d7d-8f74a3b53e3e"), "");
}
OAuth2 *authentication = new OAuth2("561c015d49c75f0d1cce6e13", "GuvKkdtu7JQlPD47qTTepRR9hQ0CUPAj4Tae3Ohcq", this);
@ -170,7 +185,6 @@ void IntegrationPluginNetatmo::setupThing(ThingSetupInfo *info)
thing->setParams(migratedParams);
// Migration done
NetatmoOutdoorModule *outdoor = new NetatmoOutdoorModule(thing->paramValue(outdoorThingNameParamTypeId).toString(),
thing->paramValue(outdoorThingMacParamTypeId).toString(),
thing->paramValue(outdoorThingBaseStationParamTypeId).toString(),
@ -181,7 +195,6 @@ void IntegrationPluginNetatmo::setupThing(ThingSetupInfo *info)
return info->finish(Thing::ThingErrorNoError);
}
qCWarning(dcNetatmo()) << "Unhandled thing class in setupDevice";
}
@ -362,11 +375,6 @@ void IntegrationPluginNetatmo::onNetworkReplyFinished()
}
}
void IntegrationPluginNetatmo::onAuthenticationChanged()
{
}
void IntegrationPluginNetatmo::onIndoorStatesChanged()
{
NetatmoBaseStation *indoor = static_cast<NetatmoBaseStation *>(sender());

View File

@ -78,7 +78,6 @@ private:
private slots:
void onPluginTimer();
void onNetworkReplyFinished();
void onAuthenticationChanged();
void onIndoorStatesChanged();
void onOutdoorStatesChanged();