@iexec/web3mail 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,3 +6,4 @@ export declare const MAX_DESIRED_WORKERPOOL_ORDER_PRICE = 0;
6
6
  export declare const DEFAULT_CONTENT_TYPE = "text/plain";
7
7
  export declare const IPFS_UPLOAD_URL = "/dns4/ipfs-upload.v8-bellecour.iex.ec/https";
8
8
  export declare const DEFAULT_IPFS_GATEWAY = "https://ipfs-gateway.v8-bellecour.iex.ec";
9
+ export declare const WHITELIST_SMART_CONTRACT_ADDRESS = "0x781482C39CcE25546583EaC4957Fb7Bf04C277D2";
@@ -6,4 +6,5 @@ export const MAX_DESIRED_WORKERPOOL_ORDER_PRICE = 0;
6
6
  export const DEFAULT_CONTENT_TYPE = 'text/plain';
7
7
  export const IPFS_UPLOAD_URL = '/dns4/ipfs-upload.v8-bellecour.iex.ec/https';
8
8
  export const DEFAULT_IPFS_GATEWAY = 'https://ipfs-gateway.v8-bellecour.iex.ec';
9
+ export const WHITELIST_SMART_CONTRACT_ADDRESS = '0x781482C39CcE25546583EaC4957Fb7Bf04C277D2';
9
10
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAAG,wCAAwC,CAAC;AAC3E,MAAM,CAAC,MAAM,+BAA+B,GAC1C,wEAAwE,CAAC;AAC3E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,6CAA6C,CAAC;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,0CAA0C,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAAG,wCAAwC,CAAC;AAC3E,MAAM,CAAC,MAAM,+BAA+B,GAC1C,wEAAwE,CAAC;AAC3E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,6CAA6C,CAAC;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,0CAA0C,CAAC;AAC/E,MAAM,CAAC,MAAM,gCAAgC,GAC3C,4CAA4C,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { providers } from 'ethers';
2
2
  import { IExecConfigOptions } from 'iexec/IExecConfig';
3
- import { Contact, SendEmailParams, SendEmailResponse, Web3SignerProvider } from './types.js';
3
+ import { Contact, FetchContactsParams, SendEmailParams, SendEmailResponse, Web3SignerProvider } from './types.js';
4
4
  export declare class IExecWeb3mail {
5
- fetchMyContacts: () => Promise<Contact[]>;
5
+ fetchMyContacts: (args?: FetchContactsParams) => Promise<Contact[]>;
6
6
  sendEmail: (args: SendEmailParams) => Promise<SendEmailResponse>;
7
7
  constructor(ethProvider: providers.ExternalProvider | Web3SignerProvider, options?: {
8
8
  iexecOptions?: IExecConfigOptions;
@@ -19,7 +19,7 @@ export class IExecWeb3mail {
19
19
  catch (e) {
20
20
  throw Error('Impossible to create GraphQLClient');
21
21
  }
22
- this.fetchMyContacts = () => fetchMyContacts({ iexec, graphQLClient });
22
+ this.fetchMyContacts = (args) => fetchMyContacts(Object.assign(Object.assign({}, args), { iexec, graphQLClient }));
23
23
  this.sendEmail = (args) => sendEmail(Object.assign(Object.assign({}, args), { iexec,
24
24
  graphQLClient }));
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IExecWeb3mail.js","sourceRoot":"","sources":["../../src/web3mail/IExecWeb3mail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAO3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AAEtE,MAAM,OAAO,aAAa;IAIxB,YACE,WAA4D,EAC5D,OAEC;QAED,IAAI,KAAY,CAAC;QACjB,IAAI,aAA4B,CAAC;QACjC,IAAI;YACF,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,WAAW,EAAE,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,CAAC;SAC3D;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,KAAK,CAAC,yBAAyB,CAAC,CAAC;SACxC;QAED,IAAI;YACF,aAAa,GAAG,IAAI,aAAa,CAAC,+BAA+B,CAAC,CAAC;SACpE;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACnD;QAED,IAAI,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,GAAG,CAAC,IAAqB,EAAE,EAAE,CACzC,SAAS,iCACJ,IAAI,KACP,KAAK;YACL,aAAa,IACb,CAAC;IACP,CAAC;CACF"}
1
+ {"version":3,"file":"IExecWeb3mail.js","sourceRoot":"","sources":["../../src/web3mail/IExecWeb3mail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAQ3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AAEtE,MAAM,OAAO,aAAa;IAIxB,YACE,WAA4D,EAC5D,OAEC;QAED,IAAI,KAAY,CAAC;QACjB,IAAI,aAA4B,CAAC;QACjC,IAAI;YACF,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,WAAW,EAAE,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,CAAC;SAC3D;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,KAAK,CAAC,yBAAyB,CAAC,CAAC;SACxC;QAED,IAAI;YACF,aAAa,GAAG,IAAI,aAAa,CAAC,+BAA+B,CAAC,CAAC;SACpE;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACnD;QAED,IAAI,CAAC,eAAe,GAAG,CAAC,IAA0B,EAAE,EAAE,CACpD,eAAe,iCAAM,IAAI,KAAE,KAAK,EAAE,aAAa,IAAG,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,CAAC,IAAqB,EAAE,EAAE,CACzC,SAAS,iCACJ,IAAI,KACP,KAAK;YACL,aAAa,IACb,CAAC;IACP,CAAC;CACF"}
@@ -1,2 +1,2 @@
1
- import { Contact, IExecConsumer, SubgraphConsumer } from './types.js';
2
- export declare const fetchMyContacts: ({ graphQLClient, iexec, }: IExecConsumer & SubgraphConsumer) => Promise<Contact[]>;
1
+ import { Contact, FetchContactsParams, IExecConsumer, SubgraphConsumer } from './types.js';
2
+ export declare const fetchMyContacts: ({ graphQLClient, iexec, page, pageSize, }: IExecConsumer & SubgraphConsumer & FetchContactsParams) => Promise<Contact[]>;
@@ -7,26 +7,40 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { WEB3_MAIL_DAPP_ADDRESS } from '../config/config.js';
10
+ import { WEB3_MAIL_DAPP_ADDRESS, WHITELIST_SMART_CONTRACT_ADDRESS, } from '../config/config.js';
11
11
  import { WorkflowError } from '../utils/errors.js';
12
12
  import { autoPaginateRequest } from '../utils/paginate.js';
13
13
  import { getValidContact } from '../utils/subgraphQuery.js';
14
14
  import { throwIfMissing } from '../utils/validators.js';
15
- export const fetchMyContacts = ({ graphQLClient = throwIfMissing(), iexec = throwIfMissing(), }) => __awaiter(void 0, void 0, void 0, function* () {
15
+ export const fetchMyContacts = ({ graphQLClient = throwIfMissing(), iexec = throwIfMissing(), page, pageSize, }) => __awaiter(void 0, void 0, void 0, function* () {
16
16
  try {
17
17
  const userAddress = yield iexec.wallet.getAddress();
18
- const showDatasetOrderbookRequest = iexec.orderbook.fetchDatasetOrderbook('any', {
18
+ const datasetOrderbookAuthorizedBySC = yield iexec.orderbook.fetchDatasetOrderbook('any', {
19
+ app: WHITELIST_SMART_CONTRACT_ADDRESS,
20
+ requester: userAddress,
21
+ page,
22
+ pageSize,
23
+ });
24
+ const datasetOrderbookAuthorizedByENS = yield iexec.orderbook.fetchDatasetOrderbook('any', {
19
25
  app: WEB3_MAIL_DAPP_ADDRESS,
20
26
  requester: userAddress,
27
+ page,
28
+ pageSize,
29
+ });
30
+ const { orders: ensOrders } = yield autoPaginateRequest({
31
+ request: datasetOrderbookAuthorizedByENS,
21
32
  });
22
- const { orders } = yield autoPaginateRequest({
23
- request: showDatasetOrderbookRequest,
33
+ const { orders: scOrders } = yield autoPaginateRequest({
34
+ request: datasetOrderbookAuthorizedBySC,
24
35
  });
25
- let myContacts = [];
36
+ const orders = ensOrders.concat(scOrders);
37
+ const myContacts = [];
26
38
  const web3DappResolvedAddress = yield iexec.ens.resolveName(WEB3_MAIL_DAPP_ADDRESS);
27
39
  orders.forEach((order) => {
28
40
  if (order.order.apprestrict.toLowerCase() ===
29
- web3DappResolvedAddress.toLowerCase()) {
41
+ web3DappResolvedAddress.toLowerCase() ||
42
+ order.order.apprestrict.toLowerCase() ===
43
+ WHITELIST_SMART_CONTRACT_ADDRESS.toLowerCase()) {
30
44
  const contact = {
31
45
  address: order.order.dataset.toLowerCase(),
32
46
  owner: order.signer.toLowerCase(),
@@ -1 +1 @@
1
- {"version":3,"file":"fetchMyContacts.js","sourceRoot":"","sources":["../../src/web3mail/fetchMyContacts.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAO,EACpC,aAAa,GAAG,cAAc,EAAE,EAChC,KAAK,GAAG,cAAc,EAAE,GACS,EAAsB,EAAE;IACzD,IAAI;QACF,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,2BAA2B,GAAG,KAAK,CAAC,SAAS,CAAC,qBAAqB,CACvE,KAAK,EACL;YACE,GAAG,EAAE,sBAAsB;YAC3B,SAAS,EAAE,WAAW;SACvB,CACF,CAAC;QACF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC;YAC3C,OAAO,EAAE,2BAA2B;SACrC,CAAC,CAAC;QACH,IAAI,UAAU,GAAc,EAAE,CAAC;QAC/B,MAAM,uBAAuB,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,WAAW,CACzD,sBAAsB,CACvB,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IACE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE;gBACrC,uBAAuB,CAAC,WAAW,EAAE,EACrC;gBACA,MAAM,OAAO,GAAG;oBACd,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE;oBAC1C,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;oBACjC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;iBACjD,CAAC;gBACF,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC1B;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAEvE,OAAO,aAAa,CAAC;KACtB;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,IAAI,aAAa,CACrB,gCAAgC,KAAK,CAAC,OAAO,EAAE,EAC/C,KAAK,CACN,CAAC;KACH;AACH,CAAC,CAAA,CAAC"}
1
+ {"version":3,"file":"fetchMyContacts.js","sourceRoot":"","sources":["../../src/web3mail/fetchMyContacts.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,sBAAsB,EACtB,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAQxD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAO,EACpC,aAAa,GAAG,cAAc,EAAE,EAChC,KAAK,GAAG,cAAc,EAAE,EACxB,IAAI,EACJ,QAAQ,GAC+C,EAEvD,EAAE;IACF,IAAI;QACF,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,8BAA8B,GAClC,MAAM,KAAK,CAAC,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE;YACjD,GAAG,EAAE,gCAAgC;YACrC,SAAS,EAAE,WAAW;YACtB,IAAI;YACJ,QAAQ;SACT,CAAC,CAAC;QACL,MAAM,+BAA+B,GACnC,MAAM,KAAK,CAAC,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE;YACjD,GAAG,EAAE,sBAAsB;YAC3B,SAAS,EAAE,WAAW;YACtB,IAAI;YACJ,QAAQ;SACT,CAAC,CAAC;QAEL,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,mBAAmB,CAAC;YACtD,OAAO,EAAE,+BAA+B;SACzC,CAAC,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,mBAAmB,CAAC;YACrD,OAAO,EAAE,8BAA8B;SACxC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAc,EAAE,CAAC;QACjC,MAAM,uBAAuB,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,WAAW,CACzD,sBAAsB,CACvB,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IACE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE;gBACnC,uBAAuB,CAAC,WAAW,EAAE;gBACvC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE;oBACnC,gCAAgC,CAAC,WAAW,EAAE,EAChD;gBACA,MAAM,OAAO,GAAG;oBACd,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE;oBAC1C,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;oBACjC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;iBACjD,CAAC;gBACF,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC1B;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAEvE,OAAO,aAAa,CAAC;KACtB;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,IAAI,aAAa,CACrB,gCAAgC,KAAK,CAAC,OAAO,EAAE,EAC/C,KAAK,CACN,CAAC;KACH;AACH,CAAC,CAAA,CAAC"}
@@ -18,6 +18,16 @@ export type SendEmailParams = {
18
18
  contentType?: string;
19
19
  senderName?: string;
20
20
  };
21
+ export type FetchContactsParams = {
22
+ /**
23
+ * Index of the page to fetch
24
+ */
25
+ page?: number;
26
+ /**
27
+ * Size of the page to fetch
28
+ */
29
+ pageSize?: number;
30
+ };
21
31
  export type SendEmailResponse = {
22
32
  taskId: Address;
23
33
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iexec/web3mail",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "This product enables users to confidentially store data–such as mail address, documents, personal information ...",
5
5
  "main": "./dist/index.js",
6
6
  "type": "module",
@@ -20,7 +20,7 @@
20
20
  "scripts": {
21
21
  "build": "rm -rf dist && tsc",
22
22
  "test": "rm -rf dist && tsc && NODE_OPTIONS=--experimental-vm-modules npx jest --coverage",
23
- "lint": "eslint . --ext .ts",
23
+ "lint": "eslint .",
24
24
  "format": "prettier --write \"src/**/*.ts\"",
25
25
  "check-format": "prettier --check \"src/**/*.ts\""
26
26
  },
@@ -38,26 +38,30 @@
38
38
  },
39
39
  "homepage": "https://github.com/iExecBlockchainComputing/web3mail-sdk#readme",
40
40
  "devDependencies": {
41
- "@iexec/dataprotector": "^0.1.2",
41
+ "@iexec/dataprotector": "^0.2.0",
42
+ "@jest/globals": "^29.7.0",
42
43
  "@types/jest": "^29.5.4",
43
- "@typescript-eslint/eslint-plugin": "^5.54.0",
44
- "eslint": "^8.35.0",
45
- "eslint-config-prettier": "^8.6.0",
46
- "eslint-config-standard-with-typescript": "^34.0.0",
47
- "eslint-plugin-import": "^2.27.5",
48
- "eslint-plugin-n": "^15.6.1",
49
- "eslint-plugin-promise": "^6.1.1",
44
+ "@typescript-eslint/eslint-plugin": "^6.7.5",
45
+ "@typescript-eslint/parser": "^6.7.5",
46
+ "eslint": "^8.51.0",
47
+ "eslint-config-airbnb-typescript": "^17.1.0",
48
+ "eslint-config-prettier": "^9.0.0",
49
+ "eslint-plugin-import": "^2.28.1",
50
+ "eslint-plugin-jest": "^27.4.2",
51
+ "eslint-plugin-sonarjs": "^0.21.0",
50
52
  "jest": "^29.5.0",
51
53
  "prettier": "^2.8.4",
52
54
  "ts-jest": "^29.1.0",
53
55
  "ts-loader": "^9.4.2",
54
- "typescript": "^4.9.5"
56
+ "typescript": "^4.9.5",
57
+ "whitelist-smart-contract": "github:iExecBlockchainComputing/whitelist-smart-contract#0.2.0"
55
58
  },
56
59
  "dependencies": {
57
60
  "@ethersproject/bytes": "^5.7.0",
58
61
  "@ethersproject/random": "^5.7.0",
62
+ "ethers": "^5.7.2",
59
63
  "graphql-request": "^6.1.0",
60
- "iexec": "^8.2.1",
64
+ "iexec": "^8.4.0",
61
65
  "kubo-rpc-client": "^3.0.1",
62
66
  "yup": "^1.1.1"
63
67
  }
@@ -7,3 +7,5 @@ export const MAX_DESIRED_WORKERPOOL_ORDER_PRICE = 0;
7
7
  export const DEFAULT_CONTENT_TYPE = 'text/plain';
8
8
  export const IPFS_UPLOAD_URL = '/dns4/ipfs-upload.v8-bellecour.iex.ec/https';
9
9
  export const DEFAULT_IPFS_GATEWAY = 'https://ipfs-gateway.v8-bellecour.iex.ec';
10
+ export const WHITELIST_SMART_CONTRACT_ADDRESS =
11
+ '0x781482C39CcE25546583EaC4957Fb7Bf04C277D2';
@@ -5,6 +5,7 @@ import { fetchMyContacts } from './fetchMyContacts.js';
5
5
  import { sendEmail } from './sendEmail.js';
6
6
  import {
7
7
  Contact,
8
+ FetchContactsParams,
8
9
  SendEmailParams,
9
10
  SendEmailResponse,
10
11
  Web3SignerProvider,
@@ -13,7 +14,7 @@ import { GraphQLClient } from 'graphql-request';
13
14
  import { DATAPROTECTOR_SUBGRAPH_ENDPOINT } from '../config/config.js';
14
15
 
15
16
  export class IExecWeb3mail {
16
- fetchMyContacts: () => Promise<Contact[]>;
17
+ fetchMyContacts: (args?: FetchContactsParams) => Promise<Contact[]>;
17
18
  sendEmail: (args: SendEmailParams) => Promise<SendEmailResponse>;
18
19
 
19
20
  constructor(
@@ -36,7 +37,8 @@ export class IExecWeb3mail {
36
37
  throw Error('Impossible to create GraphQLClient');
37
38
  }
38
39
 
39
- this.fetchMyContacts = () => fetchMyContacts({ iexec, graphQLClient });
40
+ this.fetchMyContacts = (args?: FetchContactsParams) =>
41
+ fetchMyContacts({ ...args, iexec, graphQLClient });
40
42
  this.sendEmail = (args: SendEmailParams) =>
41
43
  sendEmail({
42
44
  ...args,
@@ -1,27 +1,52 @@
1
- import { WEB3_MAIL_DAPP_ADDRESS } from '../config/config.js';
1
+ import {
2
+ WEB3_MAIL_DAPP_ADDRESS,
3
+ WHITELIST_SMART_CONTRACT_ADDRESS,
4
+ } from '../config/config.js';
2
5
  import { WorkflowError } from '../utils/errors.js';
3
6
  import { autoPaginateRequest } from '../utils/paginate.js';
4
7
  import { getValidContact } from '../utils/subgraphQuery.js';
5
8
  import { throwIfMissing } from '../utils/validators.js';
6
- import { Contact, IExecConsumer, SubgraphConsumer } from './types.js';
9
+ import {
10
+ Contact,
11
+ FetchContactsParams,
12
+ IExecConsumer,
13
+ SubgraphConsumer,
14
+ } from './types.js';
7
15
 
8
16
  export const fetchMyContacts = async ({
9
17
  graphQLClient = throwIfMissing(),
10
18
  iexec = throwIfMissing(),
11
- }: IExecConsumer & SubgraphConsumer): Promise<Contact[]> => {
19
+ page,
20
+ pageSize,
21
+ }: IExecConsumer & SubgraphConsumer & FetchContactsParams): Promise<
22
+ Contact[]
23
+ > => {
12
24
  try {
13
25
  const userAddress = await iexec.wallet.getAddress();
14
- const showDatasetOrderbookRequest = iexec.orderbook.fetchDatasetOrderbook(
15
- 'any',
16
- {
26
+ const datasetOrderbookAuthorizedBySC =
27
+ await iexec.orderbook.fetchDatasetOrderbook('any', {
28
+ app: WHITELIST_SMART_CONTRACT_ADDRESS,
29
+ requester: userAddress,
30
+ page,
31
+ pageSize,
32
+ });
33
+ const datasetOrderbookAuthorizedByENS =
34
+ await iexec.orderbook.fetchDatasetOrderbook('any', {
17
35
  app: WEB3_MAIL_DAPP_ADDRESS,
18
36
  requester: userAddress,
19
- }
20
- );
21
- const { orders } = await autoPaginateRequest({
22
- request: showDatasetOrderbookRequest,
37
+ page,
38
+ pageSize,
39
+ });
40
+
41
+ const { orders: ensOrders } = await autoPaginateRequest({
42
+ request: datasetOrderbookAuthorizedByENS,
23
43
  });
24
- let myContacts: Contact[] = [];
44
+ const { orders: scOrders } = await autoPaginateRequest({
45
+ request: datasetOrderbookAuthorizedBySC,
46
+ });
47
+
48
+ const orders = ensOrders.concat(scOrders);
49
+ const myContacts: Contact[] = [];
25
50
  const web3DappResolvedAddress = await iexec.ens.resolveName(
26
51
  WEB3_MAIL_DAPP_ADDRESS
27
52
  );
@@ -29,7 +54,9 @@ export const fetchMyContacts = async ({
29
54
  orders.forEach((order) => {
30
55
  if (
31
56
  order.order.apprestrict.toLowerCase() ===
32
- web3DappResolvedAddress.toLowerCase()
57
+ web3DappResolvedAddress.toLowerCase() ||
58
+ order.order.apprestrict.toLowerCase() ===
59
+ WHITELIST_SMART_CONTRACT_ADDRESS.toLowerCase()
33
60
  ) {
34
61
  const contact = {
35
62
  address: order.order.dataset.toLowerCase(),
@@ -24,6 +24,16 @@ export type SendEmailParams = {
24
24
  senderName?: string;
25
25
  };
26
26
 
27
+ export type FetchContactsParams = {
28
+ /**
29
+ * Index of the page to fetch
30
+ */
31
+ page?: number;
32
+ /**
33
+ * Size of the page to fetch
34
+ */
35
+ pageSize?: number;
36
+ };
27
37
  export type SendEmailResponse = {
28
38
  taskId: Address;
29
39
  };