Browse Source

fix(core): update group peerLists on local changes

reviewable/pr5469/r2
Monsterovich 7 years ago
parent
commit
01f79b0d08
  1. 8
      src/model/friend.cpp
  2. 6
      src/model/group.cpp
  3. 1
      src/model/group.h
  4. 1
      src/nexus.cpp
  5. 7
      src/widget/form/groupchatform.cpp
  6. 7
      src/widget/widget.cpp
  7. 1
      src/widget/widget.h

8
src/model/friend.cpp

@ -84,6 +84,14 @@ void Friend::setAlias(const QString& alias) @@ -84,6 +84,14 @@ void Friend::setAlias(const QString& alias)
if (oldDisplayed != newDisplayed) {
emit displayedNameChanged(newDisplayed);
}
for (Group* g : GroupList::getAllGroups()) {
if (userAlias.isEmpty()) {
g->updateUsername(friendPk, userName);
continue;
}
g->updateUsername(friendPk, userAlias);
}
}
void Friend::setStatusMessage(const QString& message)

6
src/model/group.cpp

@ -119,6 +119,12 @@ void Group::regeneratePeerList() @@ -119,6 +119,12 @@ void Group::regeneratePeerList()
emit userListChanged(groupId, toxpks);
}
void Group::updateUsername(ToxPk pk, const QString newName)
{
toxpks[pk] = newName;
emit userListChanged(groupId, toxpks);
}
bool Group::isAvGroupchat() const
{
return avGroupchat;

1
src/model/group.h

@ -47,6 +47,7 @@ public: @@ -47,6 +47,7 @@ public:
bool getMentionedFlag() const;
void updatePeer(int peerId, QString newName);
void updateUsername(ToxPk pk, const QString newName);
void setName(const QString& newTitle) override;
void setTitle(const QString& author, const QString& newTitle);
QString getName() const;

1
src/nexus.cpp

@ -213,6 +213,7 @@ void Nexus::showMainGUI() @@ -213,6 +213,7 @@ void Nexus::showMainGUI()
connect(core, &Core::friendTypingChanged, widget, &Widget::onFriendTypingChanged);
connect(core, &Core::messageSentResult, widget, &Widget::onMessageSendResult);
connect(core, &Core::groupSentFailed, widget, &Widget::onGroupSendFailed);
connect(core, &Core::usernameSet, widget, &Widget::refreshPeerListsLocal);
connect(widget, &Widget::statusSet, core, &Core::setStatus);
connect(widget, &Widget::friendRequested, core, &Core::requestFriendship);

7
src/widget/form/groupchatform.cpp

@ -337,7 +337,12 @@ void GroupChatForm::sendJoinLeaveMessages() @@ -337,7 +337,12 @@ void GroupChatForm::sendJoinLeaveMessages()
addSystemInfoMessage(tr("%1 has joined the group").arg(name), ChatMessage::INFO, QDateTime::currentDateTime());
}
else {
if (groupLast[peerPk] != name && peers.value(peerPk) == name) {
Friend *f = FriendList::findFriend(peerPk);
if (groupLast[peerPk] != name
&& peers.value(peerPk) == name
&& peerPk != Core::getInstance()->getSelfPublicKey() // ignore myself
&& !(f != nullptr && f->hasAlias()) // ignore friends with aliases
) {
addSystemInfoMessage(tr("%1 is now known as %2").arg(groupLast[peerPk], name), ChatMessage::INFO, QDateTime::currentDateTime());
groupLast[peerPk] = name;
}

7
src/widget/widget.cpp

@ -2503,3 +2503,10 @@ void Widget::focusChatInput() @@ -2503,3 +2503,10 @@ void Widget::focusChatInput()
}
}
}
void Widget::refreshPeerListsLocal(const QString &username)
{
for (Group* g : GroupList::getAllGroups()) {
g->updateUsername(Core::getInstance()->getSelfPublicKey(), username);
}
}

1
src/widget/widget.h

@ -182,6 +182,7 @@ public slots: @@ -182,6 +182,7 @@ public slots:
void onFriendDialogShown(const Friend* f);
void onGroupDialogShown(Group* g);
void toggleFullscreen();
void refreshPeerListsLocal(const QString &username);
signals:
void friendRequestAccepted(const ToxPk& friendPk);

Loading…
Cancel
Save