* Big upgrades * WIP: Stash * Stash, 30 flow errors left * Downgrade mobx * WIP * When I understand the difference between class and instance methods * 💚 * Fixes: File import Model saving edge cases pinning and starring docs Collection editing Upgrade mobx devtools * Notification settings saving works * Disabled settings * Document mailer * Working notifications * Colletion created notification Ensure not notified for own actions * Tidy up * Document updated event only for document creation Add indexes Notification setting on user creation * Commentary * Fixed: Notification setting on signup * Fix document move / duplicate stale data Add BaseModel.refresh method * Fixes: Title in sidebar not updated after editing document * 💚 * Improve / restore error handling Better handle offline errors * 👕
40 lines
1.0 KiB
JavaScript
40 lines
1.0 KiB
JavaScript
// @flow
|
|
import Koa from 'koa';
|
|
import Router from 'koa-router';
|
|
import { NotFoundError } from '../errors';
|
|
import { Mailer } from '../mailer';
|
|
|
|
const emailPreviews = new Koa();
|
|
const router = new Router();
|
|
|
|
router.get('/:type/:format', async ctx => {
|
|
let mailerOutput;
|
|
let mailer = new Mailer();
|
|
mailer.transporter = {
|
|
sendMail: data => (mailerOutput = data),
|
|
};
|
|
|
|
switch (ctx.params.type) {
|
|
// case 'emailWithProperties':
|
|
// mailer.emailWithProperties('user@example.com', {...properties});
|
|
// break;
|
|
default:
|
|
if (Object.getOwnPropertyNames(mailer).includes(ctx.params.type)) {
|
|
// $FlowIssue flow doesn't like this but we're ok with it
|
|
mailer[ctx.params.type]('user@example.com');
|
|
} else throw new NotFoundError('Email template could not be found');
|
|
}
|
|
|
|
if (!mailerOutput) return;
|
|
|
|
if (ctx.params.format === 'text') {
|
|
ctx.body = mailerOutput.text;
|
|
} else {
|
|
ctx.body = mailerOutput.html;
|
|
}
|
|
});
|
|
|
|
emailPreviews.use(router.routes());
|
|
|
|
export default emailPreviews;
|