Skip to content

Commit 8e41053

Browse files
committed
MessageEventModel::data(): use the reason field for all member events
See matrix-org/matrix-spec-proposals#2367.
1 parent f6e3764 commit 8e41053

File tree

2 files changed

+24
-16
lines changed

2 files changed

+24
-16
lines changed

client/models/messageeventmodel.cpp

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -433,28 +433,39 @@ QVariant MessageEventModel::data(const QModelIndex& idx, int role) const
433433
return m_currentRoom->prettyPrint(e.plainBody());
434434
}
435435
, [this] (const RoomMemberEvent& e) {
436+
// clang-format on
436437
// FIXME: Rewind to the name that was at the time of this event
437438
const auto subjectName =
438439
m_currentRoom->safeMemberName(e.userId()).toHtmlEscaped();
439440
// The below code assumes senderName output in AuthorRole
440441
switch( e.membership() )
441442
{
442443
case MembershipType::Invite:
443-
if (e.repeatsState())
444-
return tr("reinvited %1 to the room").arg(subjectName);
444+
if (e.repeatsState()) {
445+
auto text =
446+
tr("reinvited %1 to the room").arg(subjectName);
447+
if (!e.reason().isEmpty())
448+
text += ": " + e.reason().toHtmlEscaped();
449+
return text;
450+
}
445451
Q_FALLTHROUGH();
446452
case MembershipType::Join:
447453
{
454+
QString text {};
455+
// Part 1: invites and joins
448456
if (e.repeatsState())
449-
return tr("joined the room (repeated)");
450-
if (!e.prevContent() ||
451-
e.membership() != e.prevContent()->membership)
452-
{
453-
return e.membership() == MembershipType::Invite
457+
text = tr("joined the room (repeated)");
458+
else if (e.changesMembership())
459+
text =
460+
e.membership() == MembershipType::Invite
454461
? tr("invited %1 to the room").arg(subjectName)
455462
: tr("joined the room");
463+
if (!text.isEmpty()) {
464+
if (!e.reason().isEmpty())
465+
text += ": " + e.reason().toHtmlEscaped();
466+
return text;
456467
}
457-
QString text {};
468+
// Part 2: profile changes of joined members
458469
if (e.isRename())
459470
{
460471
if (e.displayName().isEmpty())
@@ -491,24 +502,21 @@ QVariant MessageEventModel::data(const QModelIndex& idx, int role) const
491502
: tr("self-unbanned");
492503
}
493504
return (e.senderId() != e.userId())
494-
? tr("has put %1 out of the room: %2")
495-
.arg(subjectName,
496-
e.contentJson()["reason"_ls]
497-
.toString().toHtmlEscaped())
505+
? tr("kicked %1 from the room: %2")
506+
.arg(subjectName, e.reason().toHtmlEscaped())
498507
: tr("left the room");
499508
case MembershipType::Ban:
500509
return (e.senderId() != e.userId())
501510
? tr("banned %1 from the room: %2")
502-
.arg(subjectName,
503-
e.contentJson()["reason"_ls]
504-
.toString().toHtmlEscaped())
511+
.arg(subjectName, e.reason().toHtmlEscaped())
505512
: tr("self-banned from the room");
506513
case MembershipType::Knock:
507514
return tr("knocked");
508515
default:
509516
;
510517
}
511518
return tr("made something unknown");
519+
// clang-format off
512520
}
513521
, [] (const RoomAliasesEvent& e) {
514522
return tr("has set room aliases on server %1 to: %2")

0 commit comments

Comments
 (0)