Use same lock values as mobile clients
[ProtonMail-WebClient.git] / packages / shared / lib / api / drive / sharing.ts
blob12f0aecd2369ffa06515ae5e724f51d454199e24
1 import { HTTP_ERROR_CODES } from '@proton/shared/lib/errors';
3 import { SORT_DIRECTION } from '../../constants';
4 import { DEFAULT_SORT_FIELD, DEFAULT_SORT_ORDER, FOLDER_PAGE_SIZE } from '../../drive/constants';
5 import type { AbuseReportPayload, CreateSharedURL, UpdateSharedURL } from '../../interfaces/drive/sharing';
7 export const queryInitSRPHandshake = (token: string) => {
8     return {
9         method: 'get',
10         url: `drive/urls/${token}/info`,
11         silence: true,
12     };
15 export const querySharedURLInformation = (token: string) => {
16     return {
17         method: 'get',
18         url: `drive/urls/${token}`,
19         silence: true,
20     };
23 export const querySharedURLSecurity = (token: string, Hashes: string[]) => {
24     return {
25         method: 'post',
26         url: `drive/urls/${token}/security`,
27         silence: true,
28         data: {
29             Hashes,
30         },
31     };
34 export const queryShareURLAuth = (token: string) => {
35     return {
36         method: 'post',
37         url: `drive/urls/${token}/auth`,
38         silence: true,
39     };
42 export const querySharedURLFileRevision = (
43     token: string,
44     linkID: string,
45     pagination?: {
46         FromBlockIndex: number;
47         PageSize: number;
48     }
49 ) => {
50     const query = {
51         method: 'get',
52         url: `drive/urls/${token}/files/${linkID}`,
53     };
54     if (pagination) {
55         return {
56             ...query,
57             params: pagination,
58             silence: [HTTP_ERROR_CODES.UNAUTHORIZED],
59         };
60     }
61     return query;
64 export const querySharedURLChildren = (
65     token: string,
66     linkId: string,
67     {
68         Page,
69         PageSize = FOLDER_PAGE_SIZE,
70         Sort = DEFAULT_SORT_FIELD,
71         Desc = DEFAULT_SORT_ORDER === SORT_DIRECTION.ASC ? 0 : 1,
72     }: { Page: number; PageSize?: number; FoldersOnly?: number; Sort?: string; Desc?: 0 | 1 }
73 ) => {
74     return {
75         method: 'get',
76         url: `drive/urls/${token}/folders/${linkId}/children`,
77         params: { Page, PageSize, Sort, Desc, Thumbnails: 1 },
78         silence: [HTTP_ERROR_CODES.UNAUTHORIZED],
79     };
82 export const queryCreateSharedLink = (shareId: string, data: CreateSharedURL) => {
83     return {
84         method: 'post',
85         url: `drive/shares/${shareId}/urls`,
86         data,
87     };
90 export const querySharedLinks = (shareId: string, params: { Page: number; PageSize?: number; Recursive?: 1 | 0 }) => {
91     return {
92         method: 'get',
93         url: `drive/shares/${shareId}/urls`,
94         params,
95     };
98 export const queryUpdateSharedLink = (shareId: string, shareUrlId: string, data: Partial<UpdateSharedURL>) => {
99     return {
100         method: 'put',
101         url: `drive/shares/${shareId}/urls/${shareUrlId}`,
102         data,
103     };
106 export const queryDeleteSharedLink = (shareId: string, shareUrlId: string) => {
107     return {
108         method: 'delete',
109         url: `drive/shares/${shareId}/urls/${shareUrlId}`,
110     };
113 export const queryDeleteMultipleSharedLinks = (shareId: string, shareUrlIds: string[]) => {
114     return {
115         method: 'post',
116         url: `drive/shares/${shareId}/urls/delete_multiple`,
117         data: {
118             ShareURLIDs: shareUrlIds,
119         },
120     };
123 export const querySubmitAbuseReport = (data: AbuseReportPayload) => {
124     return {
125         method: 'post',
126         url: 'drive/report/url',
127         data,
128     };
131 export const querySharedWithMeLinks = (params?: { AnchorID?: string }) => {
132     return {
133         method: 'get',
134         url: 'drive/v2/sharedwithme',
135         params,
136     };
139 export const querySharedByMeLinks = (volumeId: string, params?: { AnchorID?: string }) => {
140     return {
141         method: 'get',
142         url: `drive/v2/volumes/${volumeId}/shares`,
143         params,
144     };