Browse Source

feat(Settings): Store blocked friends in Settings

Since they aren't stored in toxcore.
reviewable/pr6623/r5
Anthony Bilinski 4 years ago
parent
commit
18a9029f9c
No known key found for this signature in database
GPG Key ID: 2AA8E0DA1B31FB3C
  1. 4
      src/persistence/ifriendsettings.h
  2. 32
      src/persistence/settings.cpp
  3. 6
      src/persistence/settings.h

4
src/persistence/ifriendsettings.h

@ -72,6 +72,10 @@ public: @@ -72,6 +72,10 @@ public:
virtual QDateTime getFriendActivity(const ToxPk& pk) const = 0;
virtual void setFriendActivity(const ToxPk& pk, const QDateTime& date) = 0;
virtual bool getFriendBlocked(const ToxPk& id) const = 0;
virtual void setFriendBlocked(const ToxPk& id, const bool blocked) = 0;
virtual QList<ToxPk> getBlockedFriends() const = 0;
virtual void saveFriendSettings(const ToxPk& pk) = 0;
virtual void removeFriendSettings(const ToxPk& pk) = 0;

32
src/persistence/settings.cpp

@ -536,6 +536,7 @@ void Settings::loadPersonal(const Profile& profile, bool newProfile) @@ -536,6 +536,7 @@ void Settings::loadPersonal(const Profile& profile, bool newProfile)
if (getEnableLogging())
fp.activity = ps.value("activity", QDateTime()).toDateTime();
fp.blocked = ps.value("blocked", false).toBool();
friendLst.insert(ToxPk(fp.addr).getByteArray(), fp);
}
ps.endArray();
@ -790,6 +791,7 @@ void Settings::savePersonal(QString profileName, const ToxEncrypt* passkey) @@ -790,6 +791,7 @@ void Settings::savePersonal(QString profileName, const ToxEncrypt* passkey)
if (getEnableLogging())
ps.setValue("activity", frnd.activity);
ps.setValue("blocked", frnd.blocked);
++index;
}
@ -1982,6 +1984,36 @@ void Settings::setFriendActivity(const ToxPk& id, const QDateTime& activity) @@ -1982,6 +1984,36 @@ void Settings::setFriendActivity(const ToxPk& id, const QDateTime& activity)
frnd.activity = activity;
}
bool Settings::getFriendBlocked(const ToxPk& id) const
{
QMutexLocker locker{&bigLock};
auto it = friendLst.find(id.getByteArray());
if (it != friendLst.end())
return it->blocked;
qWarning() << "getFriendBlocked called for unknown friend";
return false;
}
void Settings::setFriendBlocked(const ToxPk& id, bool blocked)
{
QMutexLocker locker{&bigLock};
auto& frnd = getOrInsertFriendPropRef(id);
frnd.blocked = blocked;
savePersonal();
}
QList<ToxPk> Settings::getBlockedFriends() const
{
QMutexLocker locker{&bigLock};
QList<ToxPk> blockedFriends;
for (auto it = friendLst.begin(); it != friendLst.end(); ++it) {
if (it->blocked) {
blockedFriends.append(ToxPk{it.key()});
}
}
return blockedFriends;
}
void Settings::saveFriendSettings(const ToxPk& id)
{
std::ignore = id;

6
src/persistence/settings.h

@ -510,6 +510,11 @@ public: @@ -510,6 +510,11 @@ public:
QDateTime getFriendActivity(const ToxPk& id) const override;
void setFriendActivity(const ToxPk& id, const QDateTime& activity) override;
bool getFriendBlocked(const ToxPk& id) const override;
void setFriendBlocked(const ToxPk& id, bool blocked) override;
QList<ToxPk> getBlockedFriends() const override;
void saveFriendSettings(const ToxPk& id) override;
void removeFriendSettings(const ToxPk& id) override;
@ -704,6 +709,7 @@ private: @@ -704,6 +709,7 @@ private:
QDateTime activity;
AutoAcceptCallFlags autoAcceptCall;
bool autoGroupInvite = false;
bool blocked = false;
};
struct circleProp

Loading…
Cancel
Save