1 import { Suspense, useEffect, useState } from 'react';
3 import type { ApiListenerCallback, ApiVerificationEvent, ApiWithListener } from '@proton/shared/lib/api/createApi';
4 import remove from '@proton/utils/remove';
5 import replace from '@proton/utils/replace';
7 import AccountLockedUpsellModal from '../../components/upsell/modal/AccountLockedUpsellModal';
8 import type { ApiModalPayload } from './ApiModals.interface';
10 const ApiModalsHVUpsell = ({ api }: { api: ApiWithListener }) => {
11 const [verificationModals, setVerificationModals] = useState<ApiModalPayload<ApiVerificationEvent['payload']>[]>(
16 const handleEvent: ApiListenerCallback = (event) => {
17 if (event.type === 'handle-verification' && event.payload.methods.includes('payment')) {
18 setVerificationModals((prev) => [...prev, { open: true, payload: event.payload }]);
23 api.addEventListener(handleEvent);
25 api.removeEventListener(handleEvent);
29 const verification = verificationModals[0];
34 <Suspense fallback={null}>
35 <AccountLockedUpsellModal
36 open={verification.open}
38 verification.payload.resolve(null);
41 verification.payload.error.cancel = true;
42 verification.payload.reject(verification.payload.error);
43 setVerificationModals((arr) =>
44 replace(arr, verification, {
51 setVerificationModals((arr) => remove(arr, verification));
60 export default ApiModalsHVUpsell;