Remove payments API routing initialization
[ProtonMail-WebClient.git] / packages / components / containers / filters / interfaces.ts
blob3a31d4c614970dddf51d98ca14d4ccf50f2388ab
1 import type { Annotation } from 'codemirror/addon/lint/lint';
3 export enum FilterStatement {
4     ALL = 'all',
5     ANY = 'any',
8 export enum ConditionType {
9     SELECT = 'select',
10     SUBJECT = 'subject',
11     SENDER = 'sender',
12     RECIPIENT = 'recipient',
13     ATTACHMENTS = 'attachments',
16 export enum ConditionComparator {
17     CONTAINS = 'contains',
18     IS = 'is',
19     STARTS = 'starts',
20     ENDS = 'ends',
21     MATCHES = 'matches',
22     IS_NOT = '!is',
23     DOES_NOT_CONTAIN = '!contains',
24     DOES_NOT_START = '!starts',
25     DOES_NOT_END = '!ends',
26     DOES_NOT_MATCH = '!matches',
29 export const ConditionComparatorMap = new Map<ConditionComparator, ConditionComparator>([
30     [ConditionComparator.CONTAINS, ConditionComparator.DOES_NOT_CONTAIN],
31     [ConditionComparator.ENDS, ConditionComparator.DOES_NOT_END],
32     [ConditionComparator.MATCHES, ConditionComparator.DOES_NOT_MATCH],
33     [ConditionComparator.STARTS, ConditionComparator.DOES_NOT_START],
34     [ConditionComparator.IS, ConditionComparator.IS_NOT],
35 ]);
37 //Map the opposite to it's positive comparator
38 export const ConditionComparatorInvertedMap = new Map<ConditionComparator, ConditionComparator>();
39 ConditionComparatorMap.forEach((value, key) => ConditionComparatorInvertedMap.set(value, key));
41 /* Simple Modal Filter Model interfaces */
43 export enum Step {
44     NAME,
45     CONDITIONS,
46     ACTIONS,
47     PREVIEW,
50 export interface Errors {
51     name: string;
52     actions: string;
53     conditions: string;
56 export interface Actions {
57     labelAs: {
58         labels: string[];
59         isOpen: boolean;
60     };
61     moveTo: {
62         folder?: string;
63         isOpen: boolean;
64     };
65     markAs: {
66         read: boolean;
67         starred: boolean;
68         isOpen: boolean;
69     };
70     autoReply: string | null;
71     error?: string;
74 export interface Condition {
75     type: ConditionType;
76     comparator: ConditionComparator;
77     values?: string[];
78     error?: string;
79     isOpen: boolean;
80     id: string;
81     defaultValue?: string;
84 export interface FilterModalModelBase {
85     id?: string;
86     status?: number;
87     version?: 1 | 2;
88     name: string;
91 export interface SimpleFilterModalModel extends FilterModalModelBase {
92     step: Step;
93     statement: FilterStatement;
94     actions: Actions;
95     conditions: Condition[];
96     apply: boolean;
99 export interface ErrorsSieve {
100     name: string;
101     sieve: string;
104 export interface AdvancedSimpleFilterModalModel extends FilterModalModelBase {
105     sieve: string;
106     issues: Annotation[];
109 /* Expected API Format */
111 export interface FilterOperator {
112     label: string;
113     value: FilterStatement;
116 export interface FilterRedirect {
117     Address: string;
118     Copy?: boolean;
121 export interface FilterActions {
122     FileInto: string[];
123     Mark: {
124         Read: boolean;
125         Starred: boolean;
126     };
127     Vacation?: string | null;
128     Redirects?: FilterRedirect[];
131 export interface FilterCondition {
132     Comparator: {
133         value: ConditionComparator;
134         label: string;
135     };
136     Type: {
137         value: ConditionType;
138         label: string;
139     };
140     Values: string[];
143 export interface SimpleObject {
144     Operator: FilterOperator;
145     Conditions: FilterCondition[];
146     Actions: FilterActions;
149 export interface Filter {
150     ID: string;
151     Name: string;
152     Status: number;
153     Priority: number;
154     Version: 1 | 2;
155     Simple?: SimpleObject;
156     Sieve?: string;
157     Tree?: any;
160 export type CreateFilter = Omit<Filter, 'Priority'>;