summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2023-11-28 16:12:36 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2023-11-28 16:12:36 +0100
commit242f61c8a3e34c56cf6274f7f7bb9b6dc59fe347 (patch)
tree282beba35ce7e9bdb4a6c6e56ab6e479225fb43a /src
parentUnset hidden space when space is left (diff)
downloadnheko-242f61c8a3e34c56cf6274f7f7bb9b6dc59fe347.tar.xz
Fix state event rendering for join rules and emojis
Diffstat (limited to 'src')
-rw-r--r--src/timeline/TimelineModel.cpp21
-rw-r--r--src/timeline/TimelineModel.h3
2 files changed, 10 insertions, 14 deletions
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp

index ab0e3aef..96fc5aca 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp
@@ -740,8 +740,10 @@ TimelineModel::data(const mtx::events::collections::TimelineEvents &event, int r } else if constexpr (t == mtx::events::EventType::RoomPinnedEvents) return tr("%1 changed the pinned messages.") .arg(displayName(QString::fromStdString(e.sender))); + else if constexpr (t == mtx::events::EventType::RoomJoinRules) + return formatJoinRuleEvent(e); else if constexpr (t == mtx::events::EventType::ImagePackInRoom) - formatImagePackEvent(e); + return formatImagePackEvent(e); else if constexpr (t == mtx::events::EventType::RoomCanonicalAlias) return tr("%1 changed the addresses for this room.") .arg(displayName(QString::fromStdString(e.sender))); @@ -2321,20 +2323,13 @@ TimelineModel::formatTypingUsers(const QStringList &users, const QColor &bg) } QString -TimelineModel::formatJoinRuleEvent(const QString &id) +TimelineModel::formatJoinRuleEvent( + const mtx::events::StateEvent<mtx::events::state::JoinRules> &event) const { - auto e = events.get(id.toStdString(), ""); - if (!e) - return {}; - - auto event = std::get_if<mtx::events::StateEvent<mtx::events::state::JoinRules>>(e); - if (!event) - return {}; - - QString user = QString::fromStdString(event->sender); + QString user = QString::fromStdString(event.sender); QString name = utils::replaceEmoji(displayName(user)); - switch (event->content.join_rule) { + switch (event.content.join_rule) { case mtx::events::state::JoinRule::Public: return tr("%1 opened the room to the public.").arg(name); case mtx::events::state::JoinRule::Invite: @@ -2343,7 +2338,7 @@ TimelineModel::formatJoinRuleEvent(const QString &id) return tr("%1 allowed to join this room by knocking.").arg(name); case mtx::events::state::JoinRule::Restricted: { QStringList rooms; - for (const auto &r : event->content.allow) { + for (const auto &r : event.content.allow) { if (r.type == mtx::events::state::JoinAllowanceType::RoomMembership) rooms.push_back(QString::fromStdString(r.room_id)); } diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h
index cb500270..08c776f8 100644 --- a/src/timeline/TimelineModel.h +++ b/src/timeline/TimelineModel.h
@@ -311,7 +311,8 @@ public: Q_INVOKABLE void joinReplacementRoom(const QString &id); Q_INVOKABLE QString formatMemberEvent(const mtx::events::StateEvent<mtx::events::state::Member> &event) const; - Q_INVOKABLE QString formatJoinRuleEvent(const QString &id); + QString + formatJoinRuleEvent(const mtx::events::StateEvent<mtx::events::state::JoinRules> &event) const; QString formatHistoryVisibilityEvent( const mtx::events::StateEvent<mtx::events::state::HistoryVisibility> &event) const; QString