Merge pull request 'don't save settings on quit, if readSettings() not finished' (#56) from shunf4/squawk:fix/wait_init_before_exit into messageFeed

Reviewed-on: blue/squawk#56
This commit is contained in:
Blue 2021-10-16 15:39:41 +00:00
commit 43bfaf9b7e
2 changed files with 38 additions and 32 deletions

View File

@ -27,7 +27,8 @@ Core::Squawk::Squawk(QObject* parent):
accounts(),
amap(),
network(),
waitingForAccounts(0)
waitingForAccounts(0),
isInitialized(false)
#ifdef WITH_KWALLET
,kwallet()
#endif
@ -66,39 +67,42 @@ void Core::Squawk::stop()
{
qDebug("Stopping squawk core..");
network.stop();
QSettings settings;
settings.beginGroup("core");
settings.beginWriteArray("accounts");
SimpleCrypt crypto(passwordHash);
for (std::deque<Account*>::size_type i = 0; i < accounts.size(); ++i) {
settings.setArrayIndex(i);
Account* acc = accounts[i];
Shared::AccountPassword ap = acc->getPasswordType();
QString password;
if (isInitialized) {
QSettings settings;
settings.beginGroup("core");
settings.beginWriteArray("accounts");
SimpleCrypt crypto(passwordHash);
for (std::deque<Account*>::size_type i = 0; i < accounts.size(); ++i) {
settings.setArrayIndex(i);
Account* acc = accounts[i];
switch (ap) {
case Shared::AccountPassword::plain:
password = acc->getPassword();
break;
case Shared::AccountPassword::jammed:
password = crypto.encryptToString(acc->getPassword());
break;
default:
break;
Shared::AccountPassword ap = acc->getPasswordType();
QString password;
switch (ap) {
case Shared::AccountPassword::plain:
password = acc->getPassword();
break;
case Shared::AccountPassword::jammed:
password = crypto.encryptToString(acc->getPassword());
break;
default:
break;
}
settings.setValue("name", acc->getName());
settings.setValue("server", acc->getServer());
settings.setValue("login", acc->getLogin());
settings.setValue("password", password);
settings.setValue("resource", acc->getResource());
settings.setValue("passwordType", static_cast<int>(ap));
}
settings.endArray();
settings.endGroup();
settings.setValue("name", acc->getName());
settings.setValue("server", acc->getServer());
settings.setValue("login", acc->getLogin());
settings.setValue("password", password);
settings.setValue("resource", acc->getResource());
settings.setValue("passwordType", static_cast<int>(ap));
settings.sync();
}
settings.endArray();
settings.endGroup();
settings.sync();
emit quit();
}
@ -108,6 +112,7 @@ void Core::Squawk::start()
qDebug("Starting squawk core..");
readSettings();
isInitialized = true;
network.start();
}

View File

@ -133,6 +133,7 @@ private:
Shared::Availability state;
NetworkAccess network;
uint8_t waitingForAccounts;
bool isInitialized;
#ifdef WITH_KWALLET
PSE::KWallet kwallet;