|
|
|
|
@ -9,7 +9,7 @@ use ruma::{
|
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
events::{push_rules::PushRulesEvent, GlobalAccountDataEventType}, |
|
|
|
|
push::{ConditionalPushRuleInit, PatternedPushRuleInit, SimplePushRuleInit}, |
|
|
|
|
push::{ConditionalPushRuleInit, NewPushRule, PatternedPushRuleInit, SimplePushRuleInit}, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/// # `GET /_matrix/client/r0/pushrules`
|
|
|
|
|
@ -132,66 +132,65 @@ pub async fn set_pushrule_route(
|
|
|
|
|
.map_err(|_| Error::bad_database("Invalid account data event in db."))?; |
|
|
|
|
|
|
|
|
|
let global = &mut account_data.content.global; |
|
|
|
|
match body.kind { |
|
|
|
|
RuleKind::Override => { |
|
|
|
|
match body.rule { |
|
|
|
|
NewPushRule::Override(rule) => { |
|
|
|
|
global.override_.replace( |
|
|
|
|
ConditionalPushRuleInit { |
|
|
|
|
actions: body.actions, |
|
|
|
|
actions: rule.actions, |
|
|
|
|
default: false, |
|
|
|
|
enabled: true, |
|
|
|
|
rule_id: body.rule_id, |
|
|
|
|
conditions: body.conditions, |
|
|
|
|
rule_id: rule.rule_id, |
|
|
|
|
conditions: rule.conditions, |
|
|
|
|
} |
|
|
|
|
.into(), |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
RuleKind::Underride => { |
|
|
|
|
NewPushRule::Underride(rule) => { |
|
|
|
|
global.underride.replace( |
|
|
|
|
ConditionalPushRuleInit { |
|
|
|
|
actions: body.actions, |
|
|
|
|
actions: rule.actions, |
|
|
|
|
default: false, |
|
|
|
|
enabled: true, |
|
|
|
|
rule_id: body.rule_id, |
|
|
|
|
conditions: body.conditions, |
|
|
|
|
rule_id: rule.rule_id, |
|
|
|
|
conditions: rule.conditions, |
|
|
|
|
} |
|
|
|
|
.into(), |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
RuleKind::Sender => { |
|
|
|
|
NewPushRule::Sender(rule) => { |
|
|
|
|
global.sender.replace( |
|
|
|
|
SimplePushRuleInit { |
|
|
|
|
actions: body.actions, |
|
|
|
|
actions: rule.actions, |
|
|
|
|
default: false, |
|
|
|
|
enabled: true, |
|
|
|
|
rule_id: body.rule_id, |
|
|
|
|
rule_id: rule.rule_id, |
|
|
|
|
} |
|
|
|
|
.into(), |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
RuleKind::Room => { |
|
|
|
|
NewPushRule::Room(rule) => { |
|
|
|
|
global.room.replace( |
|
|
|
|
SimplePushRuleInit { |
|
|
|
|
actions: body.actions, |
|
|
|
|
actions: rule.actions, |
|
|
|
|
default: false, |
|
|
|
|
enabled: true, |
|
|
|
|
rule_id: body.rule_id, |
|
|
|
|
rule_id: rule.rule_id, |
|
|
|
|
} |
|
|
|
|
.into(), |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
RuleKind::Content => { |
|
|
|
|
NewPushRule::Content(rule) => { |
|
|
|
|
global.content.replace( |
|
|
|
|
PatternedPushRuleInit { |
|
|
|
|
actions: body.actions, |
|
|
|
|
actions: rule.actions, |
|
|
|
|
default: false, |
|
|
|
|
enabled: true, |
|
|
|
|
rule_id: body.rule_id, |
|
|
|
|
pattern: body.pattern.unwrap_or_default(), |
|
|
|
|
rule_id: rule.rule_id, |
|
|
|
|
pattern: rule.pattern, |
|
|
|
|
} |
|
|
|
|
.into(), |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
_ => {} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
services().account_data.update( |
|
|
|
|
@ -212,7 +211,7 @@ pub async fn get_pushrule_actions_route(
|
|
|
|
|
) -> Result<get_pushrule_actions::v3::Response> { |
|
|
|
|
let sender_user = body.sender_user.as_ref().expect("user is authenticated"); |
|
|
|
|
|
|
|
|
|
if body.scope != "global" { |
|
|
|
|
if body.scope != RuleScope::Global { |
|
|
|
|
return Err(Error::BadRequest( |
|
|
|
|
ErrorKind::InvalidParam, |
|
|
|
|
"Scopes other than 'global' are not supported.", |
|
|
|
|
|