1 import type { ApiImportListResponse, ApiImporter } from '@proton/activation/src/api/api.interface';
2 import type { ImportType } from '@proton/activation/src/interface';
4 import type { ActiveImporter, ActiveImportersMap, Importer, ImportersMap } from './importers.interface';
6 export const normalizeImporter = (apiImporter: ApiImporter) => {
7 const importer: Importer = {
9 account: apiImporter.Account,
10 products: apiImporter.Product,
11 provider: apiImporter.Provider,
12 sasl: apiImporter.Sasl,
14 const activeImporters: ActiveImporter[] = [];
16 if (apiImporter.Active) {
17 Object.entries(apiImporter.Active).forEach(([product, value]) => {
19 const formattedReport: ActiveImporter = {
20 localID: `${importer.ID}-${product as ImportType}`,
21 importerID: importer.ID,
22 product: product as ImportType,
23 importState: value.State,
24 startDate: value.CreateTime,
25 errorCode: value.ErrorCode,
26 mapping: value.Mapping,
30 activeImporters.push(formattedReport);
35 return { importer, activeImporters };
38 export const normalizeImporters = (importersResponse: ApiImportListResponse) => {
39 let imports: Importer[] = [];
40 let activeImports: ActiveImporter[] = [];
42 importersResponse.Importers.forEach((apiImporter) => {
43 const { importer, activeImporters } = normalizeImporter(apiImporter);
45 imports.push(importer);
46 activeImports = activeImports.concat(activeImporters);
49 const importersMap = imports.reduce<ImportersMap>((acc, importer) => {
50 acc[importer.ID] = importer;
54 const activeImportersMap = activeImports.reduce<ActiveImportersMap>((acc, activeImporter) => {
55 acc[activeImporter.localID] = activeImporter;
59 return { importersMap, activeImportersMap };