/* * Famedly Matrix SDK * Copyright (C) 2019, 2020 Famedly GmbH * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ enum PushRuleKind { content, override, room, sender, underride } enum PushRuleAction { notify, dont_notify, coalesce, set_tweak } class PushRuleSet { List content; List override; List room; List sender; List underride; PushRuleSet.fromJson(Map json) { if (json['content'] != null) { content = (json['content'] as List).map((i) => PushRule.fromJson(i)).toList(); } if (json['override'] != null) { override = (json['override'] as List).map((i) => PushRule.fromJson(i)).toList(); } if (json['room'] != null) { room = (json['room'] as List).map((i) => PushRule.fromJson(i)).toList(); } if (json['sender'] != null) { sender = (json['sender'] as List).map((i) => PushRule.fromJson(i)).toList(); } if (json['underride'] != null) { underride = (json['underride'] as List).map((i) => PushRule.fromJson(i)).toList(); } } Map toJson() { final data = {}; if (content != null) { data['content'] = content.map((v) => v.toJson()).toList(); } if (override != null) { data['override'] = override.map((v) => v.toJson()).toList(); } if (room != null) { data['room'] = room.map((v) => v.toJson()).toList(); } if (sender != null) { data['sender'] = sender.map((v) => v.toJson()).toList(); } if (underride != null) { data['underride'] = underride.map((v) => v.toJson()).toList(); } return data; } } class PushRule { List actions; List conditions; bool isDefault; bool enabled; String pattern; String ruleId; PushRule.fromJson(Map json) { actions = json['actions']; isDefault = json['default']; enabled = json['enabled']; pattern = json['pattern']; ruleId = json['rule_id']; conditions = json['conditions'] != null ? (json['conditions'] as List) .map((i) => PushConditions.fromJson(i)) .toList() : null; } Map toJson() { final data = {}; data['actions'] = actions; data['default'] = isDefault; data['enabled'] = enabled; if (pattern != null) { data['pattern'] = pattern; } if (conditions != null) { data['conditions'] = conditions.map((i) => i.toJson()).toList(); } data['rule_id'] = ruleId; return data; } } class PushConditions { String key; String kind; String pattern; String isOperator; PushConditions( this.kind, { this.key, this.pattern, this.isOperator, }); PushConditions.fromJson(Map json) { key = json['key']; kind = json['kind']; pattern = json['pattern']; isOperator = json['is']; } Map toJson() { final data = {}; if (key != null) { data['key'] = key; } data['kind'] = kind; if (pattern != null) { data['pattern'] = pattern; } if (isOperator != null) { data['is'] = isOperator; } return data; } }