Cleanup - unused files / unused exports / duplicate exports
[ProtonMail-WebClient.git] / packages / shared / lib / api / members.ts
blobdc9b5a3353f8e8bac96659e388fcdf30932dbffc
1 import type { Address, Api, Member, SignedKeyList } from '../interfaces';
2 import type { UnprivatizeMemberResult } from '../keys/unprivatization';
3 import queryPages from './helpers/queryPages';
4 import type { PaginationParams } from './interface';
6 export const queryMembers = (params?: PaginationParams) => ({
7     method: 'get',
8     url: 'core/v4/members',
9     params: {
10         ...params,
11         IncludeAddresses: 1,
12     },
13 });
15 export const getAllMembers = (api: Api) => {
16     return queryPages((Page, PageSize) => {
17         return api<{ Members: Member[]; Total: number }>(
18             queryMembers({
19                 Page,
20                 PageSize,
21             })
22         );
23     }).then((pages) => {
24         return pages.flatMap(({ Members }) => Members);
25     });
28 export const getMember = (memberID: string) => ({
29     method: 'get',
30     url: `core/v4/members/${memberID}`,
31 });
33 export const getSelfMember = () => ({
34     method: 'get',
35     url: 'core/v4/members/me',
36 });
38 export const queryAddresses = (memberID: string, params?: PaginationParams) => ({
39     method: 'get',
40     url: `core/v4/members/${memberID}/addresses`,
41     params,
42 });
44 export const getAllMemberAddresses = (api: Api, memberID: string) => {
45     return queryPages((page, pageSize) => {
46         return api<{ Addresses: Address[]; Total: number }>(
47             queryAddresses(memberID, {
48                 Page: page,
49                 PageSize: pageSize,
50             })
51         );
52     }).then((pages) => {
53         return pages.flatMap(({ Addresses = [] }) => Addresses);
54     });
57 interface MemberPayload {
58     Name: string;
59     Private: number;
60     MaxSpace: number;
61     MaxVPN: number;
62     MaxAI: number;
65 interface UnprivatizationInvitation {
66     Email: string;
67     Data: string;
68     Signature: string;
69     PrivateIntent: boolean;
72 interface InviteMemberPayload extends Omit<MemberPayload, 'Private'> {
73     Invitation: UnprivatizationInvitation;
76 export const createMember = (data: MemberPayload | InviteMemberPayload) => ({
77     method: 'post',
78     url: 'core/v4/members',
79     data,
80 });
82 export const queryMemberUnprivatizationInfo = () => ({
83     method: 'get',
84     url: `core/v4/members/me/unprivatize`,
85 });
86 export const acceptMemberUnprivatizationInfo = (data: { OrgUserKeys: string[]; OrgActivationToken: string }) => ({
87     method: 'post',
88     url: `core/v4/members/me/unprivatize`,
89     data,
90 });
92 export const deleteMemberUnprivatizationInfo = () => ({
93     method: 'delete',
94     url: `core/v4/members/me/unprivatize`,
95 });
97 export const unprivatizeMemberKeysRoute = (memberID: string, data: UnprivatizeMemberResult) => ({
98     method: 'post',
99     url: `core/v4/members/${memberID}/keys/unprivatize`,
100     data,
103 export const checkMemberAddressAvailability = (data: { Local: string; Domain: string }) => ({
104     method: 'post',
105     url: `core/v4/members/addresses/available`,
106     data,
109 export const createMemberAddress = (memberID: string, data: { Local: string; Domain: string }) => ({
110     method: 'post',
111     url: `core/v4/members/${memberID}/addresses`,
112     data,
115 export const updateName = (memberID: string, Name: string) => ({
116     method: 'put',
117     url: `core/v4/members/${memberID}/name`,
118     data: { Name },
121 export const updateQuota = (memberID: string, MaxSpace: number) => ({
122     method: 'put',
123     url: `core/v4/members/${memberID}/quota`,
124     data: { MaxSpace },
127 export const updateRole = (memberID: string, Role: number) => ({
128     method: 'put',
129     url: `core/v4/members/${memberID}/role`,
130     data: { Role },
133 export const activatePasswordlessKey = (data: { TokenKeyPacket: string; Signature: string }) => ({
134     method: 'put',
135     url: `core/v4/organizations/keys/activate`,
136     data,
139 export const updateRolePasswordless = ({
140     memberID,
141     ...data
142 }: {
143     memberID: string;
144     Role: number;
145 } & (
146     | {
147           OrganizationKeyActivation: { TokenKeyPacket: string; Signature: string };
148       }
149     | {
150           OrganizationKeyInvitation: {
151               TokenKeyPacket: string;
152               Signature: string;
153               SignatureAddressID: string;
154               EncryptionAddressID: string;
155           };
156       }
157 )) => ({
158     method: 'put',
159     url: `core/v4/members/${memberID}/role`,
160     data,
163 export const updateVPN = (memberID: string, MaxVPN: number) => ({
164     method: 'put',
165     url: `core/v4/members/${memberID}/vpn`,
166     data: { MaxVPN },
169 export const updateAI = (memberID: string, MaxAI: number) => ({
170     method: 'put',
171     url: `core/v4/members/${memberID}/ai`,
172     data: { MaxAI },
175 export interface RequestMemberUnprivatizationInput {
176     InvitationData: string;
177     InvitationSignature: string;
180 export const requestUnprivatization = (memberID: string, data: RequestMemberUnprivatizationInput) => ({
181     method: 'post',
182     url: `core/v4/members/${memberID}/unprivatize`,
183     data,
186 export const deleteUnprivatizationRequest = (memberID: string) => ({
187     method: 'delete',
188     url: `core/v4/members/${memberID}/unprivatize`,
191 export const resendUnprivatizationLink = (memberID: string) => ({
192     method: 'post',
193     url: `core/v4/members/${memberID}/unprivatize/resend`,
196 export const removeMember = (memberID: string) => ({
197     method: 'delete',
198     url: `core/v4/members/${memberID}`,
201 export const privatizeMember = (memberID: string) => ({
202     method: 'put',
203     url: `core/v4/members/${memberID}/privatize`,
206 export const authMember = (memberID: string, data: { Unlock?: boolean } = {}) => ({
207     method: 'post',
208     url: `core/v4/members/${memberID}/auth`,
209     data,
212 export const inviteMember = (email: string, maxSpace: number) => ({
213     url: `core/v4/members/invitations`,
214     method: 'post',
215     data: {
216         Email: email,
217         MaxSpace: maxSpace,
218     },
221 export const deleteMember = (memberId: string) => ({
222     url: `core/v4/members/${memberId}`,
223     method: 'delete',
226 export const editMemberInvitation = (memberID: string, maxSpace: number) => ({
227     method: 'put',
228     url: `core/v4/members/invitations/${memberID}`,
229     data: {
230         MaxSpace: maxSpace,
231     },
234 export const updateAddressFlags = (
235     addressID: string,
236     Encrypt: boolean,
237     Sign: boolean,
238     SignedKeyList: SignedKeyList
239 ) => ({
240     method: 'put',
241     url: `core/v4/addresses/${addressID}/encryption`,
242     data: {
243         Encrypt: Encrypt ? 1 : 0,
244         Sign: Sign ? 1 : 0,
245         SignedKeyList,
246     },