default-email-handlers.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /* tslint:disable:no-non-null-assertion */
  2. import {
  3. AccountRegistrationEvent,
  4. IdentifierChangeRequestEvent,
  5. OrderStateTransitionEvent,
  6. PasswordResetEvent,
  7. } from '@vendure/core';
  8. import { EmailEventHandler } from './event-handler';
  9. import { EmailEventListener } from './event-listener';
  10. import {
  11. mockAccountRegistrationEvent,
  12. mockEmailAddressChangeEvent,
  13. mockOrderStateTransitionEvent,
  14. mockPasswordResetEvent,
  15. } from './mock-events';
  16. export const orderConfirmationHandler = new EmailEventListener('order-confirmation')
  17. .on(OrderStateTransitionEvent)
  18. .filter(event => event.toState === 'PaymentSettled' && !!event.order.customer)
  19. .setRecipient(event => event.order.customer!.emailAddress)
  20. .setFrom(`{{ fromAddress }}`)
  21. .setSubject(`Order confirmation for #{{ order.code }}`)
  22. .setTemplateVars(event => ({ order: event.order }))
  23. .setMockEvent(mockOrderStateTransitionEvent);
  24. export const emailVerificationHandler = new EmailEventListener('email-verification')
  25. .on(AccountRegistrationEvent)
  26. .setRecipient(event => event.user.identifier)
  27. .setFrom(`{{ fromAddress }}`)
  28. .setSubject(`Please verify your email address`)
  29. .setTemplateVars(event => ({ user: event.user }))
  30. .setMockEvent(mockAccountRegistrationEvent);
  31. export const passwordResetHandler = new EmailEventListener('password-reset')
  32. .on(PasswordResetEvent)
  33. .setRecipient(event => event.user.identifier)
  34. .setFrom(`{{ fromAddress }}`)
  35. .setSubject(`Forgotten password reset`)
  36. .setTemplateVars(event => ({ user: event.user }))
  37. .setMockEvent(mockPasswordResetEvent);
  38. export const emailAddressChangeHandler = new EmailEventListener('email-address-change')
  39. .on(IdentifierChangeRequestEvent)
  40. .setRecipient(event => event.user.pendingIdentifier!)
  41. .setFrom(`{{ fromAddress }}`)
  42. .setSubject(`Please verify your change of email address`)
  43. .setTemplateVars(event => ({ user: event.user }))
  44. .setMockEvent(mockEmailAddressChangeEvent);
  45. export const defaultEmailHandlers: Array<EmailEventHandler<any, any>> = [
  46. orderConfirmationHandler,
  47. emailVerificationHandler,
  48. passwordResetHandler,
  49. emailAddressChangeHandler,
  50. ];