1 import { useEffect, useMemo } from 'react';
2 import { useSelector } from 'react-redux';
4 import { c } from 'ttag';
6 import useNotifications from '@proton/components/hooks/useNotifications';
7 import { getAliasDetailsIntent } from '@proton/pass/store/actions';
8 import { aliasDetailsRequest } from '@proton/pass/store/actions/requests';
9 import { selectAliasDetails } from '@proton/pass/store/selectors';
10 import type { AliasMailbox, Maybe } from '@proton/pass/types';
12 import { useActionRequest } from './useActionRequest';
14 type UseAliasDetailsConfig = {
18 onAliasDetailsLoaded?: (mailboxes: Maybe<AliasMailbox[]>) => void;
21 export const useAliasDetails = ({ aliasEmail, itemId, shareId, onAliasDetailsLoaded }: UseAliasDetailsConfig) => {
22 const { createNotification } = useNotifications();
23 const aliasDetails = useSelector(selectAliasDetails(aliasEmail));
25 const getAliasDetails = useActionRequest(getAliasDetailsIntent, {
26 requestId: aliasDetailsRequest(aliasEmail),
27 onSuccess: () => onAliasDetailsLoaded?.(aliasDetails),
31 text: c('Warning').t`Cannot retrieve mailboxes for this alias right now`,
37 getAliasDetails.dispatch({ shareId, itemId, aliasEmail });
38 }, [shareId, itemId, aliasEmail]);
41 () => ({ value: aliasDetails ?? [], loading: getAliasDetails.loading }),
42 [aliasDetails, getAliasDetails.loading]