UNPKG

@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
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