on dc028a2 help sign in
bridge/src/lib/useMailer.js
40 lines 1.0 kB history raw
1import { useCallback, useRef } from 'react';
3import { hasReceived, sendMail } from './inviteMail';
5const STUB_MAILER = process.env.REACT_APP_STUB_MAILER === 'true';
7export default function useMailer(emails) {
8 const cache = useRef({});
10 const getHasReceived = useCallback(
11 async email => {
12 if (!cache.current[email]) {
13 if (STUB_MAILER) {
14 cache.current[email] = false;
15 } else {
16 cache.current[email] = await hasReceived(email);
17 }
18 }
20 return cache.current[email];
21 },
22 [cache]
23 );
25 // prefix to avoid clobbering sendMail import
26 // also throws if return value is false
27 const _sendMail = useCallback(async (email, ticket, sender, rawTx) => {
28 if (STUB_MAILER) {
29 console.log(`${email} - ${ticket}`);
30 return true;
31 }
33 const success = await sendMail(email, ticket, sender, rawTx);
34 if (!success) {
35 throw new Error('Failed to send mail');
36 }
37 }, []);
39 return { getHasReceived, sendMail: _sendMail };