Cleanup - unused files / unused exports / duplicate exports
[ProtonMail-WebClient.git] / packages / components / hooks / helpers / addressFlagsHelper.ts
blobd95e8b0ada106c5b3f75726d6b941d54595f6210
1 import { getNewKeyFlags } from '@proton/components/containers/keys/shared/flags';
2 import { FlagAction } from '@proton/components/containers/keys/shared/interface';
3 import { updateAddressFlags } from '@proton/shared/lib/api/members';
4 import type { Address, Api, DecryptedAddressKey, KeyTransparencyVerify } from '@proton/shared/lib/interfaces';
5 import { getSignedKeyListWithDeferredPublish } from '@proton/shared/lib/keys';
6 import { getActiveKeys, getNormalizedActiveKeys } from '@proton/shared/lib/keys/getActiveKeys';
8 export const setAddressFlags = async ({
9     encryptionDisabled,
10     expectSignatureDisabled,
11     address,
12     keyTransparencyVerify,
13     api,
14     addressesKeys,
15 }: {
16     encryptionDisabled: boolean;
17     expectSignatureDisabled: boolean;
18     address: Address;
19     keyTransparencyVerify: KeyTransparencyVerify;
20     api: Api;
21     addressesKeys?: {
22         address: Address;
23         keys: DecryptedAddressKey[];
24     }[];
25 }): Promise<void> => {
26     const { ID: addressID, SignedKeyList: currentSignedKeyList, Keys: currentKeys } = address;
27     const addressWithKeys = addressesKeys?.find(({ address: { ID } }) => ID === addressID);
28     if (addressWithKeys === undefined) {
29         throw new Error('addressWithKeys is undefined!');
30     }
32     const { keys } = addressWithKeys;
34     const activeKeys = await getActiveKeys(address, currentSignedKeyList, currentKeys, keys);
35     const newActiveKeys = getNormalizedActiveKeys(
36         address,
37         activeKeys.map((activeKey) => ({
38             ...activeKey,
39             flags: getNewKeyFlags(
40                 getNewKeyFlags(
41                     activeKey.flags,
42                     encryptionDisabled ? FlagAction.DISABLE_ENCRYPTION : FlagAction.ENABLE_ENCRYPTION
43                 ),
44                 expectSignatureDisabled ? FlagAction.DISABLE_EXPECT_SIGNED : FlagAction.ENABLE_EXPECT_SIGNED
45             ),
46         }))
47     );
48     const [newSignedKeyList, onSKLPublishSuccess] = await getSignedKeyListWithDeferredPublish(
49         newActiveKeys,
50         address,
51         keyTransparencyVerify
52     );
53     await api(updateAddressFlags(address.ID, !encryptionDisabled, !expectSignatureDisabled, newSignedKeyList));
54     await onSKLPublishSuccess();