Browse Source

reject multiple friend requests from one person

makes https://github.com/TheSpiritXIII/qTox/commit/
pull/2978/head
sudden6 10 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)
ps.beginGroup("Requests"); ps.beginGroup("Requests");
unreadFriendRequests = ps.value("unread", 0).toUInt(); unreadFriendRequests = ps.value("unread", 0).toUInt();
size = ps.beginReadArray("Request"); size = ps.beginReadArray("Request");
friendLst.reserve(size); friendRequests.clear();
friendRequests.reserve(size);
for (int i = 0; i < size; i ++) for (int i = 0; i < size; i ++)
{ {
ps.setArrayIndex(i); ps.setArrayIndex(i);
@ -1533,16 +1534,23 @@ void Settings::setCircleExpanded(int id, bool expanded)
circleLst[id].expanded = 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}; QMutexLocker locker{&bigLock};
QPair<QString, QString> request(friendAddress, message);
if (friendRequests.indexOf(request) != -1) for (auto queued : friendRequests)
return; {
if (queued.first == friendAddress)
{
queued.second = message;
return false;
}
}
QPair<QString, QString> request(friendAddress, message);
friendRequests.push_back(request); friendRequests.push_back(request);
++unreadFriendRequests; ++unreadFriendRequests;
return true;
} }
unsigned int Settings::getUnreadFriendRequests() const unsigned int Settings::getUnreadFriendRequests() const

2
src/persistence/settings.h

@ -275,7 +275,7 @@ public:
bool getCircleExpanded(int id) const; bool getCircleExpanded(int id) const;
void setCircleExpanded(int id, bool expanded); 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; unsigned int getUnreadFriendRequests() const;
QPair<QString, QString> getFriendRequest(int index) const; QPair<QString, QString> getFriendRequest(int index) const;
int getFriendRequestSize() const; int getFriendRequestSize() const;

12
src/widget/form/addfriendform.cpp

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

2
src/widget/form/addfriendform.h

@ -52,7 +52,7 @@ public:
QString getMessage() const; QString getMessage() const;
void setMode(Mode mode); void setMode(Mode mode);
void addFriendRequest(const QString& friendAddress, const QString& message); bool addFriendRequest(const QString& friendAddress, const QString& message);
signals: signals:
void friendRequested(const QString& friendAddress, const QString& message); 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,
void Widget::onFriendRequestReceived(const QString& userId, const QString& message) void Widget::onFriendRequestReceived(const QString& userId, const QString& message)
{ {
addFriendForm->addFriendRequest(userId, message); if(addFriendForm->addFriendRequest(userId, message))
friendRequestsUpdate(); {
newMessageAlert(window(), isActiveWindow(), true, true); friendRequestsUpdate();
newMessageAlert(window(), isActiveWindow(), true, true);
}
} }
void Widget::updateFriendActivity(Friend *frnd) void Widget::updateFriendActivity(Friend *frnd)

Loading…
Cancel
Save