Skip to content

Commit

Permalink
added admin email notification
Browse files Browse the repository at this point in the history
  • Loading branch information
tayhalla committed Feb 15, 2020
1 parent 692267e commit 232216d
Show file tree
Hide file tree
Showing 58 changed files with 385 additions and 4 deletions.
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions dist/index.d.ts → dist/src/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ export declare const CompileEventEmail: (event: core.Event.Model, club: core.Clu
export declare const CompilePostEmail: (post: core.Post.Model, club: core.Club.Model, link: string) => Promise<string>;
export declare const CompileConfirmationEmail: (reservation: core.Event.Reservation, event: core.Event.Model, group: core.Calendar.Group, club: core.Club.Model, url: string) => Promise<string>;
export declare const CompileWelcomeEmail: (user: core.User.Model, club: core.Club.Model, inviteLink: string) => Promise<string>;
export declare const CompileInvalidEmailAdminNotification: (adminName: string, invalidEmail: string, club: core.Club.Model) => Promise<string>;
export declare const CompileServiceEmail: (info: ConfirmationInfo, club: core.Club.Model) => Promise<string>;
5 changes: 5 additions & 0 deletions dist/index.js → dist/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ exports.CompileWelcomeEmail = (user, club, inviteLink) => {
const path = `${__dirname}/templates/welcome.html`;
return CompileEmail(path, welcomeInfo, club);
};
exports.CompileInvalidEmailAdminNotification = (adminName, invalidEmail, club) => {
const invalidEmailInfo = transform.BuildInvalidEmailAdminNotificationContent(adminName, invalidEmail, club);
const path = `${__dirname}/templates/invalidEmail.html`;
return CompileEmail(path, invalidEmailInfo, club);
};
exports.CompileServiceEmail = (info, club) => {
const path = `${__dirname}/templates/confirmation.html`;
return CompileEmail(path, info, club);
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
6 changes: 6 additions & 0 deletions dist/src/models/invalidEmail.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { ClubInfo } from './club';
export interface InvalidEmail {
firstName: string;
invalidEmail: string;
club: ClubInfo;
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 2 additions & 0 deletions dist/src/services/ses/types.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions dist/src/templates/invalidEmail.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" style="--primary-color:#1d362c;--secondary-color:#d7e1dd;background:#fff!important"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width"><meta charset="UTF-8"><link rel="stylesheet" href="https://use.typekit.net/dxm0pfd.css"><link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous"><title>My Basic Email Template Subject</title><style>@media only screen{html{min-height:100%;background:#f3f3f3}}@media only screen and (max-width:556px){.small-float-center{margin:0 auto!important;float:none!important;text-align:center!important}}@media only screen and (max-width:556px){table.body img{width:auto;height:auto}table.body center{min-width:0!important}table.body .container{width:95%!important}table.body .columns{height:auto!important;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:16px!important;padding-right:16px!important}table.body .columns .columns{padding-left:0!important;padding-right:0!important}th.small-6{display:inline-block!important;width:50%!important}th.small-12{display:inline-block!important;width:100%!important}table.menu{width:100%!important}table.menu td,table.menu th{width:auto!important;display:inline-block!important}table.menu.vertical td,table.menu.vertical th{display:block!important}table.menu[align=center]{width:auto!important}}@media screen and (max-width:596px){.body,body,html{max-width:100vw!important}}@media screen and (min-width:596px){h1{font-size:32px!important}}@media screen and (min-width:596px){p{font-size:18px!important}}@media only screen and (min-width:596px){.image-container{height:320px!important}}</style></head><body style="-moz-box-sizing:border-box;-ms-text-size-adjust:100%;-webkit-box-sizing:border-box;-webkit-text-size-adjust:100%;Margin:0;background:#fff!important;box-sizing:border-box;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.75;margin:0;min-width:100%;padding:0;text-align:left;width:100%!important"><span class="preheader" style="color:#f3f3f3;display:none!important;font-size:1px;line-height:1px;max-height:0;max-width:0;mso-hide:all!important;opacity:0;overflow:hidden;visibility:hidden"></span><table class="body" style="Margin:0;background:#fff!important;border-collapse:collapse;border-spacing:0;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;height:100%;line-height:1.75;margin:0;padding:0;text-align:left;vertical-align:top;width:100%"><tr style="padding:0;text-align:left;vertical-align:top"><td class="center" align="center" valign="top" style="-moz-hyphens:none;-ms-hyphens:none;-webkit-hyphens:none;Margin:0;border-collapse:collapse!important;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;hyphens:none;line-height:1.75;margin:0;padding:0;text-align:left;vertical-align:top;word-break:keep-all;word-wrap:break-word"><center data-parsed="" style="min-width:540px;width:100%"><table align="center" class="container body content-body float-center" style="Margin:0;background:#fff!important;border-collapse:collapse;border-radius:4px;border-spacing:0;color:#495057;float:none;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;height:100%;line-height:1.75;margin:0;padding:0;text-align:left;vertical-align:top;width:540px"><tbody><tr style="padding:0;text-align:left;vertical-align:top"><td style="-moz-hyphens:none;-ms-hyphens:none;-webkit-hyphens:none;Margin:0;border-collapse:collapse!important;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;hyphens:none;line-height:1.75;margin:0;padding:0;text-align:left;vertical-align:top;word-break:keep-all;word-wrap:break-word"><table class="row logo-row" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%"><tbody><tr style="padding:0;text-align:left;vertical-align:top"><th class="logo-col small-12 large-12 columns first last" style="Margin:0 auto;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.75;margin:0 auto;padding:0 0!important;padding-bottom:16px;padding-left:16px;padding-right:16px;text-align:left;width:524px"><table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%"><tr style="padding:0;text-align:left;vertical-align:top"><th style="Margin:0;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.75;margin:0;padding:0;text-align:left"><div class="logo-container bottom-border" style="border-bottom:1px solid #f3f3f3"><a href="{{club.baseURL}}"><img src="{{club.logoURL}}" alt="{{club.name}}" style="-ms-interpolation-mode:bicubic;border:none;clear:both;display:block;max-height:60px;max-width:100%;object-fit:cover;outline:0;text-decoration:none;vertical-align:middle;width:auto"></a></div></th><th class="expander" style="Margin:0;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.75;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th></tr></table></th></tr></tbody></table><table class="row" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%"><tbody><tr style="padding:0;text-align:left;vertical-align:top"><th class="content-column small-12 large-12 columns first last" style="Margin:0 auto;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.75;margin:0 auto;padding:0 0!important;padding-bottom:16px;padding-left:16px;padding-right:16px;text-align:left;width:524px"><table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%"><tr style="padding:0;text-align:left;vertical-align:top"><th style="Margin:0;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.75;margin:0;padding:0;text-align:left"><div class="content-container padded-container bottom-border" style="border-bottom:1px solid #f3f3f3;padding:18px 0"><p class="detail-content" style="-moz-hyphens:manual;-webkit-hyphens:manual;Margin:0;Margin-bottom:0;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;hyphens:manual;line-height:1.75;margin:0;margin-bottom:0!important;margin-top:0!important;padding:0;text-align:left;word-break:normal">Hi {{firstName}},</p><br style="color:#495057;margin-bottom:0!important;margin-top:0!important"><p class="detail-content" style="-moz-hyphens:manual;-webkit-hyphens:manual;Margin:0;Margin-bottom:0;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;hyphens:manual;line-height:1.75;margin:0;margin-bottom:0!important;margin-top:0!important;padding:0;text-align:left;word-break:normal">We noticed the unknown email: <a style="" href="mailto:{{invalidEmail}}">{{invalidEmail}}</a> is attempting to login, or reset their password.</p><br style="color:#495057;margin-bottom:0!important;margin-top:0!important"><p class="detail-content" style="-moz-hyphens:manual;-webkit-hyphens:manual;Margin:0;Margin-bottom:0;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;hyphens:manual;line-height:1.75;margin:0;margin-bottom:0!important;margin-top:0!important;padding:0;text-align:left;word-break:normal">This typically means a member has forgot the email they use to login to the platform. If you recognize this email, or know who the member could be, please reach out to them to help them login.</p><div></div></div></th><th class="expander" style="Margin:0;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.75;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th></tr></table></th></tr></tbody></table></td></tr></tbody></table><table align="center" class="container footer float-center" style="Margin:0 auto;background:#fff;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:540px"><tbody><tr style="padding:0;text-align:left;vertical-align:top"><td style="-moz-hyphens:none;-ms-hyphens:none;-webkit-hyphens:none;Margin:0;border-collapse:collapse!important;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;hyphens:none;line-height:1.75;margin:0;padding:0;text-align:left;vertical-align:top;word-break:keep-all;word-wrap:break-word"><table class="row" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%"><tbody><tr style="padding:0;text-align:left;vertical-align:top"><th class="small-12 large-12 columns first last" style="Margin:0 auto;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.75;margin:0 auto;padding:0 0!important;padding-bottom:16px;padding-left:16px;padding-right:16px;text-align:left;width:524px"><table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%"><tr style="padding:0;text-align:left;vertical-align:top"><th style="Margin:0;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.75;margin:0;padding:0;text-align:left"><table class="spacer" style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%"><tbody><tr style="padding:0;text-align:left;vertical-align:top"><td height="24px" style="-moz-hyphens:none;-ms-hyphens:none;-webkit-hyphens:none;Margin:0;border-collapse:collapse!important;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:24px;font-weight:400;hyphens:none;line-height:24px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-break:keep-all;word-wrap:break-word">&#xA0;</td></tr></tbody></table><center data-parsed="" style="min-width:492px;width:100%"><ul align="center" class="float-center" style="color:#495057;margin-bottom:0!important;margin-top:0!important;padding-left:0"><li style="list-style-type:none;margin-left:0"><a class="underline" href="{{club.website}}" style="color:#aebdc4;font-size:12px!important;font-weight:500;margin-bottom:0!important;margin-top:0!important;text-decoration:underline">{{club.name}}</a></li><li style="list-style-type:none;margin-left:0"><a class="underline" href="{{club.website}}" style="color:#aebdc4;font-size:12px!important;font-weight:500;margin-bottom:0!important;margin-top:0!important;text-decoration:underline">{{club.street}}</a></li><li style="list-style-type:none;margin-left:0"><a class="underline" href="{{club.website}}" style="color:#aebdc4;font-size:12px!important;font-weight:500;margin-bottom:0!important;margin-top:0!important;text-decoration:underline">{{club.city}}</a></li></ul></center><table class="spacer" style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%"><tbody><tr style="padding:0;text-align:left;vertical-align:top"><td height="24px" style="-moz-hyphens:none;-ms-hyphens:none;-webkit-hyphens:none;Margin:0;border-collapse:collapse!important;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:24px;font-weight:400;hyphens:none;line-height:24px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-break:keep-all;word-wrap:break-word">&#xA0;</td></tr></tbody></table><p class="text-center" style="-moz-hyphens:manual;-webkit-hyphens:manual;Margin:0;Margin-bottom:0;color:#aebdc4;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:12px!important;font-weight:500;hyphens:manual;line-height:1.75;margin:0;margin-bottom:0!important;margin-top:0!important;padding:0;text-align:center;word-break:normal">We send emails and announcements to members who have opted into our mailing list.</p><center data-parsed="" style="min-width:492px;width:100%"><a class="text-center underline float-center" href="{{club.unsubscribeURL}}" align="center" style="color:#aebdc4;font-size:12px!important;font-weight:500;margin-bottom:0!important;margin-top:0!important;text-decoration:underline">Unsubscribe</a></center></th><th class="expander" style="Margin:0;color:#495057;font-family:Avenir,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.75;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th></tr></table></th></tr></tbody></table></td></tr></tbody></table></center></td></tr></table><!-- prevent Gmail on iOS font size manipulation --><div style="display:none;white-space:nowrap;font:15px courier;line-height:0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div></body></html>
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@ import * as core from 'club-hub-core';
import { EventInfo } from '../models/event';
import { RichContent } from '../models/rich';
import { WelcomeContent } from '../models/welcome';
import { InvalidEmail } from '../models/invalidEmail';
import { ConfirmationInfo } from '../models/confirmation';
import { ClubInfo } from '../models/club';
export declare const BuildGenericContent: (content: string, club: core.Club.Model) => RichContent;
export declare const BuildEventContent: (event: core.Event.Model, club: core.Club.Model, link: string) => EventInfo;
export declare const BuildWelcomeContent: (user: core.User.Model, club: core.Club.Model, inviteLink: string) => WelcomeContent;
export declare const BuildInvalidEmailAdminNotificationContent: (adminName: string, invalidEmail: string, club: core.Club.Model) => InvalidEmail;
export declare const CompileResetPasswordInvalidEmail: (post: core.Post.Model, club: core.Club.Model, link: string) => RichContent;
export declare const BuildPostContent: (post: core.Post.Model, club: core.Club.Model, link: string) => RichContent;
export declare const BuildConfirmationContent: (reservation: core.Event.Reservation, event: core.Event.Model, group: core.Calendar.Group, club: core.Club.Model, url: string) => ConfirmationInfo;
export declare const BuildClubInfo: (club: core.Club.Model) => ClubInfo;
19 changes: 19 additions & 0 deletions dist/transform/transform.js → dist/src/transform/transform.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,25 @@ exports.BuildWelcomeContent = (user, club, inviteLink) => {
};
return welcomeContent;
};
exports.BuildInvalidEmailAdminNotificationContent = (adminName, invalidEmail, club) => {
const invalidEmailContent = {
firstName: adminName,
invalidEmail,
club: exports.BuildClubInfo(club),
};
return invalidEmailContent;
};
exports.CompileResetPasswordInvalidEmail = (post, club, link) => {
const postInfo = {
name: post.title,
photoURL: post.image.md,
content: post.richContent.html,
url: link,
cta: 'View Post',
club: exports.BuildClubInfo(club),
};
return postInfo;
};
exports.BuildPostContent = (post, club, link) => {
const postInfo = {
name: post.title,
Expand Down
1 change: 1 addition & 0 deletions dist/tests/config.test.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
import 'mocha';
16 changes: 16 additions & 0 deletions dist/tests/config.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
require("mocha");
before(function () {
return __awaiter(this, void 0, void 0, function* () {
this.timeout(2000);
});
});
1 change: 1 addition & 0 deletions dist/tests/emails.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export {};
Loading

0 comments on commit 232216d

Please sign in to comment.