Cleanup - unused files / unused exports / duplicate exports
[ProtonMail-WebClient.git] / packages / shared / lib / interfaces / contacts / Import.ts
blob2c7376fcd17b9493be03da08a4ecd71eb70e4701
1 import type { ImportContactError } from '../../contacts/errors/ImportContactError';
2 import type { ImportFatalError } from '../../contacts/errors/ImportFatalError';
3 import type { ImportFileError } from '../../contacts/errors/ImportFileError';
4 import type { ContactCard, ContactGroup, ContactValue } from './Contact';
5 import type { VCardContact, VCardKey } from './VCard';
7 export enum IMPORT_STEPS {
8     ATTACHING,
9     ATTACHED,
10     IMPORT_CSV,
11     WARNING,
12     IMPORTING,
13     SUMMARY,
14     IMPORT_GROUPS,
17 export enum IMPORT_GROUPS_ACTION {
18     MERGE,
19     CREATE,
20     IGNORE,
23 export enum EXTENSION {
24     CSV = 'csv',
25     VCF = 'vcf',
28 export type ACCEPTED_EXTENSIONS = EXTENSION.CSV | EXTENSION.VCF;
30 export interface ParsedCsvContacts {
31     headers: string[];
32     contacts: string[][];
35 export interface ImportCategories {
36     name: string;
37     totalContacts: number;
38     contactIDs: string[];
39     contactEmailIDs: string[];
40     action: IMPORT_GROUPS_ACTION;
41     targetGroup: ContactGroup;
42     targetName: string;
43     error?: string;
46 export interface ImportContactsModel {
47     step: IMPORT_STEPS;
48     fileAttached?: File;
49     extension?: ACCEPTED_EXTENSIONS;
50     preVcardsContacts?: PreVcardsContact[];
51     parsedVcardContacts: VCardContact[];
52     importedContacts: ImportedContact[];
53     totalEncrypted: number;
54     totalImported: number;
55     errors: ImportContactError[];
56     failure?: ImportFatalError | ImportFileError | Error;
57     loading: boolean;
58     contactGroups?: ContactGroup[];
59     categories: ImportCategories[];
62 export interface SimpleEncryptedContact {
63     contact: { Cards: ContactCard[]; error?: Error };
64     contactId: string;
67 export interface EncryptedContact extends SimpleEncryptedContact {
68     contactEmails: { email: string; group?: string }[];
69     categories: { name: string; group?: string }[];
72 export interface ImportedContact {
73     contactID: string;
74     contactEmailIDs: string[];
75     categories: { name: string; contactEmailIDs?: string[] }[];
78 export interface Combine {
79     [key: string]: (preVcards: PreVcardsProperty) => any;
82 export interface Display {
83     [key: string]: (preVcards: PreVcardsProperty) => string;
86 export interface PreVcardProperty {
87     header: string;
88     checked: boolean;
89     pref?: number;
90     field: string;
91     type?: VCardKey;
92     value: ContactValue;
93     combineInto?: string;
94     combineIndex?: number;
95     custom?: boolean;
98 export type PreVcardsProperty = PreVcardProperty[];
100 export type PreVcardsContact = PreVcardsProperty[];