Browse Source

reject multiple friend requests from one person

makes https://github.com/TheSpiritXIII/qTox/commit/
pull/2978/head
sudden6 9 years ago
parent
commit
c4c0740cc4
  1. 18
      src/persistence/settings.cpp
  2. 2
      src/persistence/settings.h
  3. 12
      src/widget/form/addfriendform.cpp
  4. 2
      src/widget/form/addfriendform.h
  5. 8
      src/widget/widget.cpp

18
src/persistence/settings.cpp

@ -327,7 +327,8 @@ void Settings::loadPersonal(Profile* profile) @@ -327,7 +327,8 @@ void Settings::loadPersonal(Profile* profile)
ps.beginGroup("Requests");
unreadFriendRequests = ps.value("unread", 0).toUInt();
size = ps.beginReadArray("Request");
friendLst.reserve(size);
friendRequests.clear();
friendRequests.reserve(size);
for (int i = 0; i < size; i ++)
{
ps.setArrayIndex(i);
@ -1533,16 +1534,23 @@ void Settings::setCircleExpanded(int id, bool expanded) @@ -1533,16 +1534,23 @@ void Settings::setCircleExpanded(int id, bool expanded)
circleLst[id].expanded = expanded;
}
void Settings::addFriendRequest(const QString &friendAddress, const QString &message)
bool Settings::addFriendRequest(const QString &friendAddress, const QString &message)
{
QMutexLocker locker{&bigLock};
QPair<QString, QString> request(friendAddress, message);
if (friendRequests.indexOf(request) != -1)
return;
for (auto queued : friendRequests)
{
if (queued.first == friendAddress)
{
queued.second = message;
return false;
}
}
QPair<QString, QString> request(friendAddress, message);
friendRequests.push_back(request);
++unreadFriendRequests;
return true;
}
unsigned int Settings::getUnreadFriendRequests() const

2
src/persistence/settings.h

@ -275,7 +275,7 @@ public: @@ -275,7 +275,7 @@ public:
bool getCircleExpanded(int id) const;
void setCircleExpanded(int id, bool expanded);
void addFriendRequest(const QString &friendAddress, const QString &message);
bool addFriendRequest(const QString &friendAddress, const QString &message);
unsigned int getUnreadFriendRequests() const;
QPair<QString, QString> getFriendRequest(int index) const;
int getFriendRequestSize() const;

12
src/widget/form/addfriendform.cpp

@ -127,11 +127,15 @@ void AddFriendForm::setMode(Mode mode) @@ -127,11 +127,15 @@ void AddFriendForm::setMode(Mode mode)
tabWidget->setCurrentIndex(mode);
}
void AddFriendForm::addFriendRequest(const QString &friendAddress, const QString &message)
bool AddFriendForm::addFriendRequest(const QString &friendAddress, const QString &message)
{
addFriendRequestWidget(friendAddress, message);
Settings::getInstance().addFriendRequest(friendAddress, message);
onCurrentChanged(tabWidget->currentIndex());
if(Settings::getInstance().addFriendRequest(friendAddress, message))
{
addFriendRequestWidget(friendAddress, message);
onCurrentChanged(tabWidget->currentIndex());
return true;
}
return false;
}
void AddFriendForm::onUsernameSet(const QString& username)

2
src/widget/form/addfriendform.h

@ -52,7 +52,7 @@ public: @@ -52,7 +52,7 @@ public:
QString getMessage() const;
void setMode(Mode mode);
void addFriendRequest(const QString& friendAddress, const QString& message);
bool addFriendRequest(const QString& friendAddress, const QString& message);
signals:
void friendRequested(const QString& friendAddress, const QString& message);

8
src/widget/widget.cpp

@ -1280,9 +1280,11 @@ bool Widget::newMessageAlert(QWidget* currentWindow, bool isActive, bool sound, @@ -1280,9 +1280,11 @@ bool Widget::newMessageAlert(QWidget* currentWindow, bool isActive, bool sound,
void Widget::onFriendRequestReceived(const QString& userId, const QString& message)
{
addFriendForm->addFriendRequest(userId, message);
friendRequestsUpdate();
newMessageAlert(window(), isActiveWindow(), true, true);
if(addFriendForm->addFriendRequest(userId, message))
{
friendRequestsUpdate();
newMessageAlert(window(), isActiveWindow(), true, true);
}
}
void Widget::updateFriendActivity(Friend *frnd)

Loading…
Cancel
Save