mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 03:00:46 +03:00
parent
231bebba44
commit
40ac55ddd9
5 changed files with 40 additions and 0 deletions
|
@ -415,6 +415,7 @@ Item {
|
|||
required property string callType
|
||||
required property var reactions
|
||||
required property int trustlevel
|
||||
required property int notificationlevel
|
||||
required property int encryptionError
|
||||
required property var timestamp
|
||||
required property int status
|
||||
|
@ -482,6 +483,7 @@ Item {
|
|||
callType: wrapper.callType
|
||||
reactions: wrapper.reactions
|
||||
trustlevel: wrapper.trustlevel
|
||||
notificationlevel: wrapper.notificationlevel
|
||||
encryptionError: wrapper.encryptionError
|
||||
timestamp: wrapper.timestamp
|
||||
status: wrapper.status
|
||||
|
|
|
@ -41,6 +41,7 @@ AbstractButton {
|
|||
required property string callType
|
||||
required property var reactions
|
||||
required property int trustlevel
|
||||
required property int notificationlevel
|
||||
required property int encryptionError
|
||||
required property int duration
|
||||
required property var timestamp
|
||||
|
@ -117,6 +118,8 @@ AbstractButton {
|
|||
property color bgColor: Nheko.colors.base
|
||||
color: (Settings.bubbles && !isStateEvent) ? Qt.tint(bgColor, Qt.hsla(userColor.hslHue, 0.5, userColor.hslLightness, 0.2)) : "#00000000"
|
||||
radius: 4
|
||||
border.width: r.notificationlevel == MtxEvent.Highlight ? 2 : 0
|
||||
border.color: Nheko.theme.red
|
||||
|
||||
GridLayout {
|
||||
anchors {
|
||||
|
|
|
@ -78,6 +78,11 @@ public:
|
|||
//! Check if the given room is currently open.
|
||||
bool isRoomActive(const QString &room_id);
|
||||
|
||||
const std::unique_ptr<mtx::pushrules::PushRuleEvaluator> &pushruleEvaluator() const
|
||||
{
|
||||
return pushrules;
|
||||
}
|
||||
|
||||
public slots:
|
||||
bool handleMatrixUri(QString uri);
|
||||
bool handleMatrixUri(const QUrl &uri);
|
||||
|
|
|
@ -526,6 +526,7 @@ TimelineModel::roleNames() const
|
|||
{IsEncrypted, "isEncrypted"},
|
||||
{IsStateEvent, "isStateEvent"},
|
||||
{Trustlevel, "trustlevel"},
|
||||
{Notificationlevel, "notificationlevel"},
|
||||
{EncryptionError, "encryptionError"},
|
||||
{ReplyTo, "replyTo"},
|
||||
{ThreadId, "threadId"},
|
||||
|
@ -737,6 +738,26 @@ TimelineModel::data(const mtx::events::collections::TimelineEvents &event, int r
|
|||
return crypto::Trust::Unverified;
|
||||
}
|
||||
|
||||
case Notificationlevel: {
|
||||
const auto &push = ChatPage::instance()->pushruleEvaluator();
|
||||
if (push) {
|
||||
auto actions = push->evaluate({event}, pushrulesRoomContext());
|
||||
if (std::find(actions.begin(),
|
||||
actions.end(),
|
||||
mtx::pushrules::actions::Action{
|
||||
mtx::pushrules::actions::set_tweak_highlight{}}) != actions.end()) {
|
||||
return qml_mtx_events::NotificationLevel::Highlight;
|
||||
}
|
||||
if (std::find(actions.begin(),
|
||||
actions.end(),
|
||||
mtx::pushrules::actions::Action{mtx::pushrules::actions::notify{}}) !=
|
||||
actions.end()) {
|
||||
return qml_mtx_events::NotificationLevel::Notify;
|
||||
}
|
||||
}
|
||||
return qml_mtx_events::NotificationLevel::Nothing;
|
||||
}
|
||||
|
||||
case EncryptionError:
|
||||
return events.decryptionError(event_id(event));
|
||||
|
||||
|
|
|
@ -151,6 +151,14 @@ enum EventState
|
|||
Empty,
|
||||
};
|
||||
Q_ENUM_NS(EventState)
|
||||
|
||||
enum NotificationLevel
|
||||
{
|
||||
Nothing,
|
||||
Notify,
|
||||
Highlight,
|
||||
};
|
||||
Q_ENUM_NS(NotificationLevel)
|
||||
}
|
||||
|
||||
class StateKeeper
|
||||
|
@ -242,6 +250,7 @@ public:
|
|||
IsEncrypted,
|
||||
IsStateEvent,
|
||||
Trustlevel,
|
||||
Notificationlevel,
|
||||
EncryptionError,
|
||||
ReplyTo,
|
||||
ThreadId,
|
||||
|
|
Loading…
Reference in a new issue