Use same lock values as mobile clients
[ProtonMail-WebClient.git] / packages / shared / lib / api / helpers / canonicalEmailMap.ts
blob1f32408a8d317ede1421b2d649b6f11db139b5d9
1 import { API_CODES } from '../../constants';
2 import type { Api } from '../../interfaces';
3 import type { GetCanonicalAddressesApiResponse } from '../../interfaces/calendar';
4 import type { SimpleMap } from '../../interfaces/utils';
5 import { getCanonicalAddresses } from '../addresses';
7 export const getCanonicalEmailMap = async (emails: string[] = [], api: Api) => {
8     const map: SimpleMap<string> = {};
9     if (emails.length) {
10         const encodedEmails = emails.map((email) => encodeURIComponent(email));
11         const { Responses, Code } = await api<GetCanonicalAddressesApiResponse>(getCanonicalAddresses(encodedEmails));
12         if (Code !== API_CODES.GLOBAL_SUCCESS) {
13             throw new Error('Canonicalize operation failed');
14         }
15         Responses.forEach(({ Email, Response: { Code, CanonicalEmail } }) => {
16             if (Code !== API_CODES.SINGLE_SUCCESS) {
17                 throw new Error('Canonicalize operation failed');
18             }
19             map[Email] = CanonicalEmail;
20         });
21     }
22     return map;