You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fluffychat/lib/pages/settings_notifications/push_rule_extensions.dart

122 lines
4.6 KiB
Dart

import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:matrix/matrix.dart';
extension PushRuleExtension on PushRule {
String getPushRuleName(L10n l10n) {
switch (ruleId) {
case '.m.rule.contains_user_name':
return l10n.notificationRuleContainsUserName;
case '.m.rule.master':
return l10n.notificationRuleMaster;
case '.m.rule.suppress_notices':
return l10n.notificationRuleSuppressNotices;
case '.m.rule.invite_for_me':
return l10n.notificationRuleInviteForMe;
case '.m.rule.member_event':
return l10n.notificationRuleMemberEvent;
case '.m.rule.is_user_mention':
return l10n.notificationRuleIsUserMention;
case '.m.rule.contains_display_name':
return l10n.notificationRuleContainsDisplayName;
case '.m.rule.is_room_mention':
return l10n.notificationRuleIsRoomMention;
case '.m.rule.roomnotif':
return l10n.notificationRuleRoomnotif;
case '.m.rule.tombstone':
return l10n.notificationRuleTombstone;
case '.m.rule.reaction':
return l10n.notificationRuleReaction;
case '.m.rule.room_server_acl':
return l10n.notificationRuleRoomServerAcl;
case '.m.rule.suppress_edits':
return l10n.notificationRuleSuppressEdits;
case '.m.rule.call':
return l10n.notificationRuleCall;
case '.m.rule.encrypted_room_one_to_one':
return l10n.notificationRuleEncryptedRoomOneToOne;
case '.m.rule.room_one_to_one':
return l10n.notificationRuleRoomOneToOne;
case '.m.rule.message':
return l10n.notificationRuleMessage;
case '.m.rule.encrypted':
return l10n.notificationRuleEncrypted;
case '.m.rule.room.server_acl':
return l10n.notificationRuleServerAcl;
case '.im.vector.jitsi':
return l10n.notificationRuleJitsi;
default:
return ruleId.split('.').last.replaceAll('_', ' ').capitalize();
}
}
String getPushRuleDescription(L10n l10n) {
switch (ruleId) {
case '.m.rule.contains_user_name':
return l10n.notificationRuleContainsUserNameDescription;
case '.m.rule.master':
return l10n.notificationRuleMasterDescription;
case '.m.rule.suppress_notices':
return l10n.notificationRuleSuppressNoticesDescription;
case '.m.rule.invite_for_me':
return l10n.notificationRuleInviteForMeDescription;
case '.m.rule.member_event':
return l10n.notificationRuleMemberEventDescription;
case '.m.rule.is_user_mention':
return l10n.notificationRuleIsUserMentionDescription;
case '.m.rule.contains_display_name':
return l10n.notificationRuleContainsDisplayNameDescription;
case '.m.rule.is_room_mention':
return l10n.notificationRuleIsRoomMentionDescription;
case '.m.rule.roomnotif':
return l10n.notificationRuleRoomnotifDescription;
case '.m.rule.tombstone':
return l10n.notificationRuleTombstoneDescription;
case '.m.rule.reaction':
return l10n.notificationRuleReactionDescription;
case '.m.rule.room_server_acl':
return l10n.notificationRuleRoomServerAclDescription;
case '.m.rule.suppress_edits':
return l10n.notificationRuleSuppressEditsDescription;
case '.m.rule.call':
return l10n.notificationRuleCallDescription;
case '.m.rule.encrypted_room_one_to_one':
return l10n.notificationRuleEncryptedRoomOneToOneDescription;
case '.m.rule.room_one_to_one':
return l10n.notificationRuleRoomOneToOneDescription;
case '.m.rule.message':
return l10n.notificationRuleMessageDescription;
case '.m.rule.encrypted':
return l10n.notificationRuleEncryptedDescription;
case '.m.rule.room.server_acl':
return l10n.notificationRuleServerAclDescription;
case '.im.vector.jitsi':
return l10n.notificationRuleJitsiDescription;
default:
return l10n.unknownPushRule(ruleId);
}
}
}
extension PushRuleKindLocal on PushRuleKind {
String localized(L10n l10n) {
switch (this) {
case PushRuleKind.content:
return l10n.contentNotificationSettings;
case PushRuleKind.override:
return l10n.generalNotificationSettings;
case PushRuleKind.room:
return l10n.roomNotificationSettings;
case PushRuleKind.sender:
return l10n.userSpecificNotificationSettings;
case PushRuleKind.underride:
return l10n.otherNotificationSettings;
}
}
}
extension on String {
String capitalize() {
return "${this[0].toUpperCase()}${substring(1).toLowerCase()}";
}
}