Merge branch 'IDTEAM-1.26.0' into 'main'
[ProtonMail-WebClient.git] / packages / shared / lib / api / conversations.ts
blob21929e8e8bd51c59324643b3943ed1a61de98559
1 import type { SPAM_ACTION } from '../mail/mailSettings';
2 import { getAppropriateSort } from './helpers/snoozeSort';
3 import type { MailboxItemsQueryParams } from './mailbox';
5 export const queryConversations = ({
6     Location,
7     Page,
8     PageSize,
9     Limit,
10     LabelID,
11     Sort = 'Time',
12     Desc = 1,
13     Begin,
14     End,
15     BeginID,
16     EndID,
17     Keyword,
18     To,
19     From,
20     Subject,
21     Attachments,
22     Starred,
23     Unread,
24     AddressID,
25     ID,
26     AutoWildcard,
27     Anchor,
28     AnchorID,
29 }: MailboxItemsQueryParams) => ({
30     method: 'get',
31     url: 'mail/v4/conversations',
32     params: {
33         Location,
34         Page,
35         PageSize,
36         Limit,
37         LabelID,
38         Sort: getAppropriateSort(LabelID, Sort),
39         Desc,
40         Begin,
41         End,
42         BeginID,
43         EndID,
44         Keyword,
45         Recipients: To,
46         From,
47         Subject,
48         Attachments,
49         Starred,
50         Unread,
51         AddressID,
52         ID,
53         AutoWildcard,
54         Anchor,
55         AnchorID,
56     },
57 });
59 export const getConversation = (conversationID: string, MessageID?: string) => ({
60     method: 'get',
61     url: `mail/v4/conversations/${conversationID}`,
62     params: { MessageID },
63 });
65 export const queryConversationCount = (AddressID?: string) => ({
66     method: 'get',
67     url: 'mail/v4/conversations/count',
68     params: { AddressID },
69 });
71 export const markConversationsAsRead = (IDs: string[]) => ({
72     method: 'put',
73     url: 'mail/v4/conversations/read',
74     data: { IDs },
75 });
77 export const markConversationsAsUnread = (IDs: string[], LabelID: string) => ({
78     method: 'put',
79     url: 'mail/v4/conversations/unread',
80     data: { IDs, LabelID },
81 });
83 export const deleteConversations = (IDs: string[], LabelID: string) => ({
84     method: 'put',
85     url: 'mail/v4/conversations/delete',
86     data: { IDs, LabelID },
87 });
89 interface LabelConversationsProps {
90     LabelID: string;
91     IDs: string[];
92     SpamAction?: SPAM_ACTION;
95 export const labelConversations = ({ LabelID, IDs, SpamAction }: LabelConversationsProps) => ({
96     method: 'put',
97     url: 'mail/v4/conversations/label',
98     data: { LabelID, IDs, SpamAction },
99 });
101 export const unlabelConversations = ({ LabelID, IDs }: LabelConversationsProps) => ({
102     method: 'put',
103     url: 'mail/v4/conversations/unlabel',
104     data: { LabelID, IDs },
107 export const setExpiration = (IDs: string[], ExpirationTime: number | null) => ({
108     method: 'put',
109     url: 'mail/v4/conversations/expire',
110     data: { IDs, ExpirationTime },
113 export const snoozeConversations = (IDs: string[], SnoozeTime: number) => ({
114     method: 'put',
115     url: 'mail/v4/conversations/snooze',
116     data: { IDs, SnoozeTime },
119 export const unsnoozeConversations = (IDs: string[]) => ({
120     method: 'put',
121     url: 'mail/v4/conversations/unsnooze',
122     data: { IDs },