@iexec/web3mail
Version:
This product enables users to confidentially store data–such as mail address, documents, personal information ...
41 lines (37 loc) • 1.17 kB
text/typescript
import { booleanSchema, throwIfMissing } from '../utils/validators.js';
import { fetchUserContacts } from './fetchUserContacts.js';
import {
DappAddressConsumer,
DappWhitelistAddressConsumer,
IExecConsumer,
SubgraphConsumer,
} from './internalTypes.js';
import { Contact, FetchMyContactsParams } from './types.js';
export type FetchMyContacts = typeof fetchMyContacts;
export const fetchMyContacts = async ({
graphQLClient = throwIfMissing(),
iexec = throwIfMissing(),
dappAddress = throwIfMissing(),
dappWhitelistAddress = throwIfMissing(),
isUserStrict = false,
bulkOnly = false,
}: IExecConsumer &
SubgraphConsumer &
DappAddressConsumer &
DappWhitelistAddressConsumer &
FetchMyContactsParams): Promise<Contact[]> => {
const vIsUserStrict = booleanSchema()
.label('isUserStrict')
.validateSync(isUserStrict);
const vBulkOnly = booleanSchema().label('bulkOnly').validateSync(bulkOnly);
const userAddress = await iexec.wallet.getAddress();
return fetchUserContacts({
iexec,
graphQLClient,
dappAddress,
dappWhitelistAddress,
userAddress,
isUserStrict: vIsUserStrict,
bulkOnly: vBulkOnly,
});
};