index.js 950 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /* eslint-disable global-require */
  2. import mailgun from "mailgun-js";
  3. import CoreClass from "../../core";
  4. class MailModule extends CoreClass {
  5. constructor() {
  6. super("mail");
  7. }
  8. async initialize() {
  9. const importSchema = schemaName =>
  10. new Promise(resolve => {
  11. import(`./schemas/${schemaName}`).then(schema => resolve(schema.default));
  12. });
  13. this.schemas = {
  14. verifyEmail: await importSchema("verifyEmail"),
  15. resetPasswordRequest: await importSchema("resetPasswordRequest"),
  16. passwordRequest: await importSchema("passwordRequest")
  17. };
  18. return new Promise(resolve => resolve());
  19. }
  20. SEND_MAIL(payload) {
  21. // data, cb
  22. return new Promise(resolve => {
  23. if (this.enabled)
  24. mailgun.messages().send(payload.data, () => {
  25. resolve();
  26. });
  27. else resolve();
  28. });
  29. }
  30. GET_SCHEMA(payload) {
  31. return new Promise(resolve => {
  32. resolve(this.schemas[payload.schemaName]);
  33. });
  34. }
  35. }
  36. export default new MailModule();