feat: Debounce notification emails by 5 minutes to avoid duplicate notifications where possible (#1598)

This commit is contained in:
Tom Moor
2020-10-25 15:06:07 -07:00
committed by GitHub
parent dba5dd14e7
commit bfdfa3ee4b
2 changed files with 53 additions and 24 deletions

View File

@ -2,7 +2,7 @@
import Router from "koa-router";
import auth from "../middlewares/authentication";
import { NotificationSetting } from "../models";
import { Team, NotificationSetting } from "../models";
import policy from "../policies";
import { presentNotificationSetting } from "../presenters";
@ -62,16 +62,23 @@ router.post("notificationSettings.unsubscribe", async (ctx) => {
ctx.assertUuid(id, "id is required");
ctx.assertPresent(token, "token is required");
const setting = await NotificationSetting.findByPk(id);
if (setting) {
if (token !== setting.unsubscribeToken) {
ctx.redirect(`${process.env.URL}?notice=invalid-auth`);
}
const setting = await NotificationSetting.findByPk(id, {
include: [
{
model: Team,
required: true,
as: "team",
},
],
});
if (setting && setting.unsubscribeToken === token) {
await setting.destroy();
ctx.redirect(`${setting.team.url}/settings/notifications?success`);
return;
}
ctx.redirect(`${process.env.URL}/settings/notifications?success`);
ctx.redirect(`${process.env.URL}?notice=invalid-auth`);
});
export default router;