Evaluate push rules locally
3 files changed, 15 insertions, 0 deletions
diff --git a/src/timeline/Permissions.h b/src/timeline/Permissions.h
index aa10999d..1b3f55e4 100644
--- a/src/timeline/Permissions.h
+++ b/src/timeline/Permissions.h
@@ -34,6 +34,8 @@ public:
void invalidate();
+ const mtx::events::state::PowerLevels &powerlevelEvent() const { return pl; };
+
private:
QString roomId_;
mtx::events::state::PowerLevels pl;
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 0eec5cae..0e726bde 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -2921,6 +2921,17 @@ TimelineModel::directChatOtherUserId() const
return {};
}
+mtx::pushrules::PushRuleEvaluator::RoomContext
+TimelineModel::pushrulesRoomContext() const
+{
+ return mtx::pushrules::PushRuleEvaluator::RoomContext{
+ .user_display_name =
+ cache::displayName(room_id_.toStdString(), http::client()->user_id().to_string()),
+ .member_count = cache::client()->memberCount(room_id_.toStdString()),
+ .power_levels = permissions_.powerlevelEvent(),
+ };
+}
+
RoomSummary *
TimelineModel::parentSpace()
{
diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h
index 8e191556..a4904f4f 100644
--- a/src/timeline/TimelineModel.h
+++ b/src/timeline/TimelineModel.h
@@ -336,6 +336,8 @@ public:
bool isDirect() const { return roomMemberCount() <= 2; }
QString directChatOtherUserId() const;
+ mtx::pushrules::PushRuleEvaluator::RoomContext pushrulesRoomContext() const;
+
std::optional<mtx::events::collections::TimelineEvents> eventById(const QString &id)
{
auto e = events.get(id.toStdString(), "");
|