Vulcan/packages/vulcan-notifications/lib/emails.js

159 lines
3.7 KiB
JavaScript

import VulcanEmail from 'meteor/vulcan:email';
// note: leverage weak dependencies on packages
const Comments = Package['vulcan:comments'] ? Package['vulcan:comments'].default : null;
const Posts = Package['vulcan:posts'] ? Package['vulcan:posts'].default : null;
VulcanEmail.addEmails({
newUser: {
template: "newUser",
path: "/email/new-user/:_id?",
subject() {
return "A new user has been created";
},
query: `
query UsersSingleQuery($documentId: String){
UsersSingle(documentId: $documentId){
displayName
pageUrl
}
}
`
},
accountApproved: {
template: "accountApproved",
path: "/email/account-approved/:_id?",
subject() {
return "Your account has been approved.";
},
query: `
query UsersSingleQuery($documentId: String){
UsersSingle(documentId: $documentId){
displayName
}
SiteData{
title
url
}
}
`
}
});
if (!!Posts) {
const postsQuery = `
query PostsSingleQuery($documentId: String){
PostsSingle(documentId: $documentId){
title
url
pageUrl
linkUrl
htmlBody
thumbnailUrl
user{
pageUrl
displayName
}
}
}
`
const dummyPost = {title: '[title]', user: {displayName: '[user]'}};
VulcanEmail.addEmails({
newPost: {
template: "newPost",
path: "/email/new-post/:_id?",
subject(data) {
const post = _.isEmpty(data) ? dummyPost : data.PostsSingle;
return post.user.displayName+' has created a new post: '+post.title;
},
query: postsQuery
},
newPendingPost: {
template: "newPendingPost",
path: "/email/new-pending-post/:_id?",
subject(data) {
const post = _.isEmpty(data) ? dummyPost : data.PostsSingle;
return post.user.displayName+' has a new post pending approval: '+post.title;
},
query: postsQuery
},
postApproved: {
template: "postApproved",
path: "/email/post-approved/:_id?",
subject(data) {
const post = _.isEmpty(data) ? dummyPost : data.PostsSingle;
return 'Your post “'+post.title+'” has been approved';
},
query: postsQuery
}
});
}
if (!!Comments) {
const commentsQuery = `
query CommentsSingleQuery($documentId: String){
CommentsSingle(documentId: $documentId){
pageUrl
htmlBody
post{
pageUrl
title
}
user{
pageUrl
displayName
}
}
}
`
const dummyComment = {post: {title: '[title]'}, user: {displayName: '[user]'}};
VulcanEmail.addEmails({
newComment: {
template: "newComment",
path: "/email/new-comment/:_id?",
subject(data) {
const comment = _.isEmpty(data) ? dummyComment : data.CommentsSingle;
return comment.user.displayName+' left a new comment on your post "' + comment.post.title + '"';
},
query: commentsQuery
},
newReply: {
template: "newReply",
path: "/email/new-reply/:_id?",
subject(data) {
const comment = _.isEmpty(data) ? dummyComment : data.CommentsSingle;
return comment.user.displayName+' replied to your comment on "'+comment.post.title+'"';
},
query: commentsQuery
},
newCommentSubscribed: {
template: "newComment",
path: "/email/new-comment-subscribed/:_id?",
subject(data) {
const comment = _.isEmpty(data) ? dummyComment : data.CommentsSingle;
return comment.user.displayName+' left a new comment on "' + comment.post.title + '"';
},
query: commentsQuery
}
});
}