@iexec/web3telegram
Version:
Enables secure, blockchain-based messaging by encrypting Telegram user IDs for privacy. It lets users message Ethereum account holders without knowing their Telegram details.
48 lines • 2.11 kB
JavaScript
import { NULL_ADDRESS } from 'iexec/utils';
import { handleIfProtocolError, WorkflowError } from '../utils/errors.js';
import { addressOrEnsSchema, throwIfMissing, campaignRequestSchema, } from '../utils/validators.js';
import { ValidationError } from 'yup';
export const sendTelegramCampaign = async ({ dataProtector = throwIfMissing(), workerpoolAddressOrEns = throwIfMissing(), campaignRequest, }) => {
try {
const vCampaignRequest = campaignRequestSchema()
.required()
.label('campaignRequest')
.validateSync(campaignRequest);
const vWorkerpoolAddressOrEns = addressOrEnsSchema()
.required()
.label('WorkerpoolAddressOrEns')
.validateSync(workerpoolAddressOrEns);
if (vCampaignRequest.workerpool !== NULL_ADDRESS &&
vCampaignRequest.workerpool.toLowerCase() !==
vWorkerpoolAddressOrEns.toLowerCase()) {
throw new ValidationError("workerpoolAddressOrEns doesn't match campaignRequest workerpool");
}
// Process bulk request
const processBulkRequestResponse = await dataProtector.processBulkRequest({
bulkRequest: vCampaignRequest,
workerpool: vWorkerpoolAddressOrEns,
});
return processBulkRequestResponse;
}
catch (error) {
if (error?.isProtocolError === true) {
throw error;
}
handleIfProtocolError(error);
const isProcessProtectedDataError = error instanceof Error &&
error.message === 'Failed to process protected data';
if (isProcessProtectedDataError) {
const cause = error?.cause;
const unwrappedCause = cause instanceof Error ? cause : error;
throw new WorkflowError({
message: 'Failed to sendTelegramCampaign',
errorCause: unwrappedCause,
});
}
throw new WorkflowError({
message: 'Failed to sendTelegramCampaign',
errorCause: error,
});
}
};
//# sourceMappingURL=sendTelegramCampaign.js.map