UNPKG

@iexec/dataprotector

Version:

This product enables users to confidentially store data–such as mail address, documents, personal information ...

73 lines 2.49 kB
import { WorkflowError } from '../../utils/errors.js'; import { addressOrEnsSchema, throwIfMissing, validateOnStatusUpdateCallback, } from '../../utils/validators.js'; import { getGrantedAccess } from './getGrantedAccess.js'; import { revokeOneAccess } from './revokeOneAccess.js'; export const revokeAllAccess = async ({ iexec = throwIfMissing(), protectedData, authorizedApp, authorizedUser, onStatusUpdate = () => { }, }) => { const vProtectedData = addressOrEnsSchema() .required() .label('protectedData') .validateSync(protectedData); const vAuthorizedApp = addressOrEnsSchema() .label('authorizedApp') .validateSync(authorizedApp); const vAuthorizedUser = addressOrEnsSchema() .label('authorizedUser') .validateSync(authorizedUser); const vOnStatusUpdate = validateOnStatusUpdateCallback(onStatusUpdate); const allAccessRevoked = []; vOnStatusUpdate({ title: 'RETRIEVE_ALL_GRANTED_ACCESS', isDone: false, }); const { grantedAccess } = await getGrantedAccess({ iexec, protectedData: vProtectedData, authorizedApp: vAuthorizedApp, authorizedUser: vAuthorizedUser, pageSize: 1000, }).catch((e) => { throw new WorkflowError({ message: 'Failed to retrieve granted access', errorCause: e, }); }); vOnStatusUpdate({ title: 'RETRIEVE_ALL_GRANTED_ACCESS', isDone: true, payload: { grantedAccessCount: String(grantedAccess.length), }, }); for (const access of grantedAccess) { try { vOnStatusUpdate({ title: 'REVOKE_ONE_ACCESS', isDone: false, payload: { access, }, }); const { txHash } = await revokeOneAccess({ iexec, ...access, }); allAccessRevoked.push({ access, txHash }); vOnStatusUpdate({ title: 'REVOKE_ONE_ACCESS', isDone: true, payload: { access, txHash, }, }); } catch (e) { throw new WorkflowError({ message: 'Failed to revoke an access', errorCause: e, }); } } return allAccessRevoked; }; //# sourceMappingURL=revokeAllAccess.js.map