mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
fix(core): this should resolve message handling in persistent groups
This commit is contained in:
parent
aa83edf759
commit
ee500703aa
|
@ -104,21 +104,29 @@ void Group::regeneratePeerList()
|
||||||
for (int i = 0; i < nPeers; ++i) {
|
for (int i = 0; i < nPeers; ++i) {
|
||||||
const auto pk = core->getGroupPeerPk(groupId, i);
|
const auto pk = core->getGroupPeerPk(groupId, i);
|
||||||
|
|
||||||
toxpks[pk] = peers[i];
|
|
||||||
if (toxpks[pk].isEmpty()) {
|
|
||||||
toxpks[pk] =
|
|
||||||
tr("<Empty>", "Placeholder when someone's name in a group chat is empty");
|
|
||||||
}
|
|
||||||
|
|
||||||
Friend* f = FriendList::findFriend(pk);
|
Friend* f = FriendList::findFriend(pk);
|
||||||
if (f != nullptr && f->hasAlias()) {
|
if (f != nullptr && f->hasAlias()) {
|
||||||
toxpks[pk] = f->getDisplayedName();
|
toxpks[pk] = f->getDisplayedName();
|
||||||
|
empty_nick[pk] = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
empty_nick[pk] = peers[i].isEmpty();
|
||||||
|
if (empty_nick[pk]) {
|
||||||
|
toxpks[pk] = tr("<Empty>", "Placeholder when someone's name in a group chat is empty");
|
||||||
|
} else {
|
||||||
|
toxpks[pk] = peers[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
emit userListChanged(groupId, toxpks);
|
emit userListChanged(groupId, toxpks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Group::peerHasNickname(ToxPk pk)
|
||||||
|
{
|
||||||
|
return !empty_nick[pk];
|
||||||
|
}
|
||||||
|
|
||||||
void Group::updateUsername(ToxPk pk, const QString newName)
|
void Group::updateUsername(ToxPk pk, const QString newName)
|
||||||
{
|
{
|
||||||
toxpks[pk] = newName;
|
toxpks[pk] = newName;
|
||||||
|
|
|
@ -39,6 +39,7 @@ public:
|
||||||
int getPeersCount() const;
|
int getPeersCount() const;
|
||||||
void regeneratePeerList();
|
void regeneratePeerList();
|
||||||
const QMap<ToxPk, QString>& getPeerList() const;
|
const QMap<ToxPk, QString>& getPeerList() const;
|
||||||
|
bool peerHasNickname(ToxPk pk);
|
||||||
|
|
||||||
void setEventFlag(bool f) override;
|
void setEventFlag(bool f) override;
|
||||||
bool getEventFlag() const override;
|
bool getEventFlag() const override;
|
||||||
|
@ -67,6 +68,7 @@ private:
|
||||||
QString selfName;
|
QString selfName;
|
||||||
QString title;
|
QString title;
|
||||||
QMap<ToxPk, QString> toxpks;
|
QMap<ToxPk, QString> toxpks;
|
||||||
|
QMap<ToxPk, bool> empty_nick;
|
||||||
bool hasNewMessages;
|
bool hasNewMessages;
|
||||||
bool userWasMentioned;
|
bool userWasMentioned;
|
||||||
int groupId;
|
int groupId;
|
||||||
|
|
|
@ -325,14 +325,20 @@ void GroupChatForm::sendJoinLeaveMessages()
|
||||||
|
|
||||||
// user joins
|
// user joins
|
||||||
for (const auto& peerPk : peers.keys()) {
|
for (const auto& peerPk : peers.keys()) {
|
||||||
|
const QString name = FriendList::decideNickname(peerPk, peers.value(peerPk));
|
||||||
if (!firstTime.value(peerPk, false)) {
|
if (!firstTime.value(peerPk, false)) {
|
||||||
if (!groupLast.contains(peerPk)) {
|
if (!groupLast.contains(peerPk)) {
|
||||||
|
if (group->peerHasNickname(peerPk)) {
|
||||||
|
firstTime[peerPk] = true;
|
||||||
|
groupLast.insert(peerPk, name);
|
||||||
|
addSystemInfoMessage(tr("%1 is online").arg(name), ChatMessage::INFO, QDateTime::currentDateTime());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
addSystemInfoMessage(tr("A new user has connected to the group"), ChatMessage::INFO, QDateTime::currentDateTime());
|
addSystemInfoMessage(tr("A new user has connected to the group"), ChatMessage::INFO, QDateTime::currentDateTime());
|
||||||
}
|
}
|
||||||
firstTime[peerPk] = true;
|
firstTime[peerPk] = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const QString name = FriendList::decideNickname(peerPk, peers.value(peerPk));
|
|
||||||
if (!groupLast.contains(peerPk)) {
|
if (!groupLast.contains(peerPk)) {
|
||||||
groupLast.insert(peerPk, name);
|
groupLast.insert(peerPk, name);
|
||||||
addSystemInfoMessage(tr("%1 has joined the group").arg(name), ChatMessage::INFO, QDateTime::currentDateTime());
|
addSystemInfoMessage(tr("%1 has joined the group").arg(name), ChatMessage::INFO, QDateTime::currentDateTime());
|
||||||
|
|
Loading…
Reference in New Issue
Block a user