Merge branch 'IDTEAM-1.26.0' into 'main'
[ProtonMail-WebClient.git] / packages / shared / lib / api / drive / share.ts
blobfefcfe53bb6ca7e37f06516b444d22301f0c13f8
1 import { HTTP_STATUS_CODE } from '@proton/shared/lib/constants';
3 import { EXPENSIVE_REQUEST_TIMEOUT } from '../../drive/constants';
4 import { API_CUSTOM_ERROR_CODES } from '../../errors';
5 import type { MoveLink } from '../../interfaces/drive/link';
6 import type { CreateDrivePhotosShare, CreateDriveShare } from '../../interfaces/drive/share';
8 export const queryCreateShare = (volumeID: string, data: CreateDriveShare) => ({
9     method: 'post',
10     url: `drive/volumes/${volumeID}/shares`,
11     data,
12 });
13 export const queryCreatePhotosShare = (volumeID: string, data: CreateDrivePhotosShare) => ({
14     method: 'post',
15     url: `drive/volumes/${volumeID}/photos/share`,
16     data,
17 });
19 export const queryUserShares = (ShowAll = 1) => ({
20     method: 'get',
21     url: 'drive/shares',
22     silence: true,
23     params: { ShowAll },
24 });
26 export const queryShareMeta = (shareID: string) => ({
27     method: `get`,
28     url: `drive/shares/${shareID}`,
29     silence: [API_CUSTOM_ERROR_CODES.NOT_ALLOWED],
30 });
32 export const queryRenameLink = (
33     shareID: string,
34     linkID: string,
35     data: { Name: string; MIMEType?: string; Hash: string; SignatureAddress: string; OriginalHash: string }
36 ) => ({
37     method: `put`,
38     url: `drive/shares/${shareID}/links/${linkID}/rename`,
39     data,
40 });
42 export const queryMoveLink = (shareID: string, linkID: string, data: MoveLink) => ({
43     method: 'put',
44     url: `drive/shares/${shareID}/links/${linkID}/move`,
45     data,
46 });
48 export const queryEvents = (shareID: string, eventID: string) => ({
49     timeout: EXPENSIVE_REQUEST_TIMEOUT,
50     url: `drive/shares/${shareID}/events/${eventID}`,
51     method: 'get',
52 });
54 export const queryLatestEvents = (shareID: string) => ({
55     url: `drive/shares/${shareID}/events/latest`,
56     method: 'get',
57 });
59 export const queryDeleteShare = (
60     shareID: string,
61     { Force, silence }: { Force?: 0 | 1; silence?: boolean } = { Force: 0 }
62 ) => ({
63     url: `drive/shares/${shareID}`,
64     method: 'delete',
65     params: {
66         Force,
67     },
68     silence,
69 });
70 export const queryShareMembers = (shareID: string) => ({
71     url: `drive/shares/${shareID}/members`,
72     method: 'get',
73 });
75 export const queryRemoveShareMember = (shareID: string, memberID: string) => ({
76     method: 'delete',
77     url: `drive/shares/${shareID}/members/${memberID}`,
78 });
80 export const queryAcceptShareInvite = (
81     shareID: string,
82     memberID: string,
83     {
84         AddressID,
85         AddressKeyID,
86         SessionKeySignature,
87     }: {
88         AddressID: string;
89         AddressKeyID: string;
90         SessionKeySignature: string;
91     }
92 ) => ({
93     method: 'post',
94     url: `drive/shares/${shareID}/members/invitations/${memberID}`,
95     data: {
96         AddressID,
97         AddressKeyID,
98         SessionKeySignature,
99     },
102 /* Shares migration */
103 export const queryUnmigratedShares = () => ({
104     url: 'drive/migrations/shareaccesswithnode/unmigrated',
105     method: 'get',
106     silence: [HTTP_STATUS_CODE.NOT_FOUND],
109 export const queryMigrateLegacyShares = (data: {
110     PassphraseNodeKeyPackets: { PassphraseNodeKeyPacket: string; ShareID: string }[];
111     UnreadableShareIDs?: string[];
112 }) => ({
113     url: 'drive/migrations/shareaccesswithnode',
114     method: 'post',
115     data,
116     silence: [HTTP_STATUS_CODE.NOT_FOUND],
119 export const queryResolveContextShare = ({ volumeId, linkId }: { volumeId: string; linkId: string }) => ({
120     url: `drive/volumes/${volumeId}/links/${linkId}/context`,
121     method: 'get',