Skip to content

Commit c62d51d

Browse files
fix!: improve campaign methods interfaces (#89)
* docs: improve types doc * fix!: use plural form of grantedAccess for GrantedAccess list * test: remove unsupported feature workaround * fix: improve workerpool mismatch error message * chore: clean type usage BREAKING CHANGE: `prepareTelegram()` param `grantedAccess` is renamed to `grantedAccesses`
1 parent 46c1a19 commit c62d51d

File tree

6 files changed

+97
-187
lines changed

6 files changed

+97
-187
lines changed

src/web3telegram/prepareTelegramCampaign.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export const prepareTelegramCampaign = async ({
3939
label,
4040
appMaxPrice = MAX_DESIRED_APP_ORDER_PRICE,
4141
workerpoolMaxPrice = MAX_DESIRED_WORKERPOOL_ORDER_PRICE,
42-
grantedAccess,
42+
grantedAccesses,
4343
maxProtectedDataPerTask,
4444
}: IExecConsumer &
4545
DappAddressConsumer &
@@ -122,7 +122,7 @@ export const prepareTelegramCampaign = async ({
122122
args: vLabel,
123123
inputFiles: [],
124124
secrets,
125-
bulkAccesses: grantedAccess,
125+
bulkAccesses: grantedAccesses,
126126
maxProtectedDataPerTask: vMaxProtectedDataPerTask,
127127
});
128128
return { campaignRequest };

src/web3telegram/sendTelegramCampaign.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ import {
77
} from '../utils/validators.js';
88
import { DataProtectorConsumer } from './internalTypes.js';
99
import {
10-
BulkRequest,
1110
ProcessBulkRequestParams,
1211
ProcessBulkRequestResponse,
1312
} from '@iexec/dataprotector';
1413
import { ValidationError } from 'yup';
1514
import {
15+
CampaignRequest,
1616
SendTelegramCampaignParams,
1717
SendTelegramCampaignResponse,
1818
} from './types.js';
@@ -29,7 +29,7 @@ export const sendTelegramCampaign = async ({
2929
const vCampaignRequest = campaignRequestSchema()
3030
.required()
3131
.label('campaignRequest')
32-
.validateSync(campaignRequest) as BulkRequest;
32+
.validateSync(campaignRequest) as CampaignRequest;
3333

3434
const vWorkerpoolAddressOrEns = addressOrEnsSchema()
3535
.required()
@@ -41,13 +41,15 @@ export const sendTelegramCampaign = async ({
4141
vCampaignRequest.workerpool.toLowerCase() !==
4242
vWorkerpoolAddressOrEns.toLowerCase()
4343
) {
44-
throw new ValidationError('Workerpool mismatch');
44+
throw new ValidationError(
45+
"workerpoolAddressOrEns doesn't match campaignRequest workerpool"
46+
);
4547
}
4648

4749
// Process bulk request
4850
const processBulkRequestResponse: ProcessBulkRequestResponse<ProcessBulkRequestParams> =
4951
await dataProtector.processBulkRequest({
50-
bulkRequest: vCampaignRequest as BulkRequest,
52+
bulkRequest: vCampaignRequest,
5153
workerpool: vWorkerpoolAddressOrEns,
5254
});
5355

src/web3telegram/types.ts

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,22 @@ export type Address = string;
1212

1313
export type TimeStamp = string;
1414

15+
/**
16+
* request to send email in bulk
17+
*
18+
* use `prepareEmailCampaign()` to create a `CampaignRequest`
19+
*
20+
* then use `sendEmailCampaign()` to send the campaign
21+
*/
22+
export type CampaignRequest = BulkRequest;
23+
24+
/**
25+
* authorization signed by the data owner granting access to this contact
26+
*
27+
* `GrantedAccess` are obtained by fetching contacts (e.g. `fetchMyContacts()` or `fetchUserContacts()`)
28+
*
29+
* `GrantedAccess` can be consumed for email campaigns (e.g. `prepareEmailCampaign()` then `sendEmailCampaign()`)
30+
*/
1531
export type GrantedAccess = {
1632
dataset: string;
1733
datasetprice: string;
@@ -70,11 +86,11 @@ export type SendTelegramResponse = {
7086

7187
export type PrepareTelegramCampaignParams = {
7288
/**
73-
* Granted access to process in bulk.
89+
* List of `GrantedAccess` to contacts to send telegrams to in bulk.
90+
*
7491
* use `fetchMyContacts({ bulkOnly: true })` to get granted accesses.
75-
* if not provided, the single message will be processed.
7692
*/
77-
grantedAccess: GrantedAccess[];
93+
grantedAccesses: GrantedAccess[];
7894
maxProtectedDataPerTask?: number;
7995
senderName?: string;
8096
telegramContent: string;
@@ -86,11 +102,22 @@ export type PrepareTelegramCampaignParams = {
86102
};
87103

88104
export type PrepareTelegramCampaignResponse = {
89-
campaignRequest: BulkRequest;
105+
/**
106+
* The prepared campaign request
107+
*
108+
* Use this in `sendTelegramCampaign()` to start or continue sending the campaign
109+
*/
110+
campaignRequest: CampaignRequest;
90111
};
91112

92113
export type SendTelegramCampaignParams = {
93-
campaignRequest: BulkRequest;
114+
/**
115+
* The prepared campaign request from prepareTelegramCampaign
116+
*/
117+
campaignRequest: CampaignRequest;
118+
/**
119+
* Workerpool address or ENS to use for processing
120+
*/
94121
workerpoolAddressOrEns?: string;
95122
};
96123

tests/e2e/prepareTelegramCampaign.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ describe('web3telegram.prepareTelegramCampaign()', () => {
101101
telegramContent: 'Bulk test message',
102102
senderName: 'Bulk test sender',
103103
// protectedData is optional when grantedAccess is provided
104-
grantedAccess: bulkOrders,
104+
grantedAccesses: bulkOrders,
105105
maxProtectedDataPerTask: 3,
106106
workerpoolMaxPrice: prodWorkerpoolPublicPrice,
107107
});

0 commit comments

Comments
 (0)