mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
refactor(profile): simplify Profile constructor
Simplifies Profile constructor by passing Settings instance by reference during loadProfile and createNewProfile calls.
This commit is contained in:
parent
5a3b720513
commit
00449937d4
|
@ -341,7 +341,7 @@ int main(int argc, char* argv[])
|
||||||
// TODO (kriby): Shift responsibility of linking views to model objects from nexus
|
// TODO (kriby): Shift responsibility of linking views to model objects from nexus
|
||||||
// Further: generate view instances separately (loginScreen, mainGUI, audio)
|
// Further: generate view instances separately (loginScreen, mainGUI, audio)
|
||||||
if (autoLogin && Profile::exists(profileName) && !Profile::isEncrypted(profileName)) {
|
if (autoLogin && Profile::exists(profileName) && !Profile::isEncrypted(profileName)) {
|
||||||
Profile* profile = Profile::loadProfile(profileName);
|
Profile* profile = Profile::loadProfile(profileName, QString(), settings);
|
||||||
settings.updateProfileData(profile);
|
settings.updateProfileData(profile);
|
||||||
nexus.bootstrapWithProfile(profile);
|
nexus.bootstrapWithProfile(profile);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -292,7 +292,7 @@ Profile* Nexus::getProfile()
|
||||||
*/
|
*/
|
||||||
void Nexus::onCreateNewProfile(const QString& name, const QString& pass)
|
void Nexus::onCreateNewProfile(const QString& name, const QString& pass)
|
||||||
{
|
{
|
||||||
setProfile(Profile::createProfile(name, pass));
|
setProfile(Profile::createProfile(name, pass, *settings));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -300,7 +300,7 @@ void Nexus::onCreateNewProfile(const QString& name, const QString& pass)
|
||||||
*/
|
*/
|
||||||
void Nexus::onLoadProfile(const QString& name, const QString& pass)
|
void Nexus::onLoadProfile(const QString& name, const QString& pass)
|
||||||
{
|
{
|
||||||
setProfile(Profile::loadProfile(name, pass));
|
setProfile(Profile::loadProfile(name, pass, *settings));
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Changes the loaded profile and notifies listeners.
|
* Changes the loaded profile and notifies listeners.
|
||||||
|
|
|
@ -275,20 +275,12 @@ void Profile::initCore(const QByteArray& toxsave, const ICoreSettings& s, bool i
|
||||||
Qt::ConnectionType::QueuedConnection);
|
Qt::ConnectionType::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
Profile::Profile(const QString& name, const QString& password, bool isNewProfile,
|
Profile::Profile(const QString& name, const QString& password, std::unique_ptr<ToxEncrypt> passkey)
|
||||||
const QByteArray& toxsave, std::unique_ptr<ToxEncrypt> passkey)
|
|
||||||
: name{name}
|
: name{name}
|
||||||
, passkey{std::move(passkey)}
|
, passkey{std::move(passkey)}
|
||||||
, isRemoved{false}
|
, isRemoved{false}
|
||||||
, encrypted{this->passkey != nullptr}
|
, encrypted{this->passkey != nullptr}
|
||||||
{
|
{}
|
||||||
Settings& s = Settings::getInstance();
|
|
||||||
// TODO(kriby): Move/refactor core initialization to remove settings dependency
|
|
||||||
// note to self: use slots/signals for this?
|
|
||||||
initCore(toxsave, s, isNewProfile);
|
|
||||||
|
|
||||||
loadDatabase(password);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Locks and loads an existing profile and creates the associate Core* instance.
|
* @brief Locks and loads an existing profile and creates the associate Core* instance.
|
||||||
|
@ -298,7 +290,7 @@ Profile::Profile(const QString& name, const QString& password, bool isNewProfile
|
||||||
*
|
*
|
||||||
* @note If the profile is already in use return nullptr.
|
* @note If the profile is already in use return nullptr.
|
||||||
*/
|
*/
|
||||||
Profile* Profile::loadProfile(const QString& name, const QString& password)
|
Profile* Profile::loadProfile(const QString& name, const QString& password, const Settings& settings)
|
||||||
{
|
{
|
||||||
if (ProfileLocker::hasLock()) {
|
if (ProfileLocker::hasLock()) {
|
||||||
qCritical() << "Tried to load profile " << name << ", but another profile is already locked!";
|
qCritical() << "Tried to load profile " << name << ", but another profile is already locked!";
|
||||||
|
@ -312,7 +304,7 @@ Profile* Profile::loadProfile(const QString& name, const QString& password)
|
||||||
|
|
||||||
LoadToxDataError error;
|
LoadToxDataError error;
|
||||||
QByteArray toxsave = QByteArray();
|
QByteArray toxsave = QByteArray();
|
||||||
QString path = Settings::getInstance().getSettingsDirPath() + name + ".tox";
|
QString path = settings.getSettingsDirPath() + name + ".tox";
|
||||||
std::unique_ptr<ToxEncrypt> tmpKey = loadToxData(password, path, toxsave, error);
|
std::unique_ptr<ToxEncrypt> tmpKey = loadToxData(password, path, toxsave, error);
|
||||||
|
|
||||||
if (logLoadToxDataError(error, path)) {
|
if (logLoadToxDataError(error, path)) {
|
||||||
|
@ -320,7 +312,12 @@ Profile* Profile::loadProfile(const QString& name, const QString& password)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Profile(name, password, false, toxsave, std::move(tmpKey));
|
Profile* p = new Profile(name, password, std::move(tmpKey));
|
||||||
|
|
||||||
|
p->initCore(toxsave, settings, /*isNewProfile*/ false);
|
||||||
|
p->loadDatabase(password);
|
||||||
|
|
||||||
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -331,7 +328,8 @@ Profile* Profile::loadProfile(const QString& name, const QString& password)
|
||||||
*
|
*
|
||||||
* @note If the profile is already in use return nullptr.
|
* @note If the profile is already in use return nullptr.
|
||||||
*/
|
*/
|
||||||
Profile* Profile::createProfile(const QString& userName, const QString& password)
|
Profile* Profile::createProfile(const QString& userName, const QString& password,
|
||||||
|
const Settings& settings)
|
||||||
{
|
{
|
||||||
CreateToxDataError error;
|
CreateToxDataError error;
|
||||||
QString path = Settings::getInstance().getSettingsDirPath() + userName + ".tox";
|
QString path = Settings::getInstance().getSettingsDirPath() + userName + ".tox";
|
||||||
|
@ -341,8 +339,10 @@ Profile* Profile::createProfile(const QString& userName, const QString& password
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings::getInstance().createPersonal(userName);
|
settings.createPersonal(userName);
|
||||||
Profile* p = new Profile(userName, password, true, QByteArray(), std::move(tmpKey));
|
Profile* p = new Profile(userName, password, std::move(tmpKey));
|
||||||
|
p->initCore(QByteArray(), settings, /*isNewProfile*/ true);
|
||||||
|
p->loadDatabase(password);
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,13 +34,16 @@
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
class Settings;
|
||||||
|
|
||||||
class Profile : public QObject
|
class Profile : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static Profile* loadProfile(const QString& name, const QString& password = QString());
|
static Profile* loadProfile(const QString& name, const QString& password, const Settings& settings);
|
||||||
static Profile* createProfile(const QString& name, const QString& password);
|
static Profile* createProfile(const QString& name, const QString& password,
|
||||||
|
const Settings& settings);
|
||||||
~Profile();
|
~Profile();
|
||||||
|
|
||||||
Core* getCore();
|
Core* getCore();
|
||||||
|
@ -98,8 +101,7 @@ private slots:
|
||||||
void onAvatarOfferReceived(uint32_t friendId, uint32_t fileId, const QByteArray& avatarHash);
|
void onAvatarOfferReceived(uint32_t friendId, uint32_t fileId, const QByteArray& avatarHash);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Profile(const QString& name, const QString& password, bool newProfile, const QByteArray& toxsave,
|
Profile(const QString& name, const QString& password, std::unique_ptr<ToxEncrypt> passkey);
|
||||||
std::unique_ptr<ToxEncrypt> passKey);
|
|
||||||
static QStringList getFilesByExt(QString extension);
|
static QStringList getFilesByExt(QString extension);
|
||||||
QString avatarPath(const ToxPk& owner, bool forceUnencrypted = false);
|
QString avatarPath(const ToxPk& owner, bool forceUnencrypted = false);
|
||||||
bool saveToxSave(QByteArray data);
|
bool saveToxSave(QByteArray data);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user