Skip to content

Commit 8b3336c

Browse files
committed
Remove unneeded *.ts email files from actions
1 parent 05780a2 commit 8b3336c

10 files changed

Lines changed: 181 additions & 14 deletions

File tree

‎src/actions/contact/email/message.mjml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
</mj-style>
2121
</mj-head>
2222
<mj-body background-color="#ffffff" width="600px">
23+
{% include '../../utils/email/header/default/index.mjml' %}
2324
<mj-section padding="20px">
2425
<mj-column>
2526
<mj-text

‎src/actions/gdpr/email/dsarText.ts‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* Template for DSAR (Data Subject Access Request) verification
3+
* emails for data access and deletion requests.
4+
*/
5+
import contactContent from '@content/contact.json'
6+
import type { DSARVerificationEmailPropsText } from '@actions/gdpr/@types'
7+
8+
export const dsarVerificationEmailText = (props: DSARVerificationEmailPropsText): string => {
9+
const { requestType, actionText, verifyUrl, expiresIn } = props
10+
const { company } = contactContent
11+
12+
return `
13+
Data ${requestType === 'ACCESS' ? 'Access' : 'Deletion'} Request
14+
15+
Hello,
16+
17+
We received a request to ${actionText} from ${company.name}. To complete this request, please verify your email address by visiting this link:
18+
19+
${verifyUrl}
20+
21+
${
22+
requestType === 'DELETE'
23+
? `
24+
⚠️ IMPORTANT: This action will permanently delete all your data from our systems. This cannot be undone.
25+
`
26+
: ''
27+
}
28+
29+
This link will expire in ${expiresIn}.
30+
31+
If you didn't make this request, you can safely ignore this email. No action will be taken without verification.
32+
33+
Questions? Contact us at ${company.dataProtectionOfficer.email}
34+
35+
© ${new Date().getFullYear()} ${company.name}. All rights reserved.
36+
`.trim()
37+
}

‎src/actions/gdpr/email/verification.mjml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@
8383
</mj-style>
8484
</mj-head>
8585
<mj-body background-color="#ffffff" width="600px">
86+
{% include '../../utils/email/header/default/index.mjml' %}
8687
<mj-section mj-class="header-section">
8788
<mj-column>
8889
<mj-text mj-class="header-text">

‎src/actions/newsletter/email/confirmation.mjml‎

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,7 @@
102102
</mj-style>
103103
</mj-head>
104104
<mj-body background-color="#ffffff" width="600px">
105-
<mj-section mj-class="header-section">
106-
<mj-column>
107-
<mj-text mj-class="logo">
108-
Webstack Builders
109-
</mj-text>
110-
</mj-column>
111-
</mj-section>
105+
{% include '../../utils/email/header/newsletter/index.mjml' %}
112106

113107
<mj-section mj-class="content-section">
114108
<mj-column>
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import confirmationTemplateContent from './confirmation.mjml?raw'
2+
import { compileEmailTemplate, createEmailTemplate } from '@actions/utils/email/templateCompiler'
3+
4+
const confirmationTemplate = createEmailTemplate(
5+
new URL('./confirmation.mjml', import.meta.url),
6+
confirmationTemplateContent
7+
)
8+
9+
const createGreeting = (firstName?: string): string => {
10+
return firstName?.trim() ? `Hi ${firstName.trim()}` : 'Hello'
11+
}
12+
13+
type ConfirmationTemplateData = {
14+
confirmUrl: string
15+
expiresIn: string
16+
greeting: string
17+
}
18+
19+
const createConfirmationTemplateData = (
20+
firstName: string | undefined,
21+
confirmUrl: string,
22+
expiresIn: string
23+
): ConfirmationTemplateData => ({
24+
confirmUrl,
25+
expiresIn,
26+
greeting: createGreeting(firstName),
27+
})
28+
29+
export async function generateConfirmationEmailHtml(
30+
firstName: string | undefined,
31+
confirmUrl: string,
32+
expiresIn: string = '24 hours'
33+
): Promise<string> {
34+
const { html } = await compileEmailTemplate(
35+
confirmationTemplate,
36+
createConfirmationTemplateData(firstName, confirmUrl, expiresIn)
37+
)
38+
39+
return html
40+
}
41+
42+
export async function generateConfirmationEmailText(
43+
firstName: string | undefined,
44+
confirmUrl: string,
45+
expiresIn: string = '24 hours'
46+
): Promise<string> {
47+
const { text } = await compileEmailTemplate(
48+
confirmationTemplate,
49+
createConfirmationTemplateData(firstName, confirmUrl, expiresIn)
50+
)
51+
52+
return text
53+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export { generateConfirmationEmailHtml } from './confirmationHtml'
2+
export { generateConfirmationEmailText } from './confirmationHtml'
3+
export { generateWelcomeEmailHtml } from './welcomeHtml'
4+
export { generateWelcomeEmailText } from './welcomeHtml'

‎src/actions/newsletter/email/welcome.mjml‎

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,7 @@
7474
background-color="#ffffff"
7575
width="600px"
7676
>
77-
<mj-section mj-class="header-section">
78-
<mj-column>
79-
<mj-text mj-class="logo">
80-
Webstack Builders
81-
</mj-text>
82-
</mj-column>
83-
</mj-section>
77+
{% include '../../utils/email/header/newsletter/index.mjml' %}
8478

8579
<mj-section mj-class="content-section">
8680
<mj-column>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import welcomeTemplateContent from './welcome.mjml?raw'
2+
import { compileEmailTemplate, createEmailTemplate } from '@actions/utils/email/templateCompiler'
3+
4+
const welcomeTemplate = createEmailTemplate(
5+
new URL('./welcome.mjml', import.meta.url),
6+
welcomeTemplateContent
7+
)
8+
9+
const createGreeting = (firstName?: string): string => {
10+
return firstName?.trim() ? `Hi ${firstName.trim()}` : 'Hello'
11+
}
12+
13+
type WelcomeTemplateData = {
14+
greeting: string
15+
}
16+
17+
const createWelcomeTemplateData = (firstName?: string): WelcomeTemplateData => ({
18+
greeting: createGreeting(firstName),
19+
})
20+
21+
export async function generateWelcomeEmailHtml(firstName?: string): Promise<string> {
22+
const { html } = await compileEmailTemplate(
23+
welcomeTemplate,
24+
createWelcomeTemplateData(firstName)
25+
)
26+
27+
return html
28+
}
29+
30+
export async function generateWelcomeEmailText(firstName?: string): Promise<string> {
31+
const { text } = await compileEmailTemplate(
32+
welcomeTemplate,
33+
createWelcomeTemplateData(firstName)
34+
)
35+
36+
return text
37+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<mj-section background-color="#e5e7eb" padding="16px 24px">
2+
<mj-column width="25%" vertical-align="middle">
3+
<mj-text align="left" padding="0">
4+
<a href="{{ common.company.url }}" style="color:#001A39;text-decoration:none;display:inline-block">
5+
{% include '../../footer/partials/logo-table.mjml' %}
6+
</a>
7+
</mj-text>
8+
</mj-column>
9+
<mj-column width="75%" vertical-align="middle">
10+
<mj-text
11+
align="left"
12+
color="#001A39"
13+
font-size="28px"
14+
font-weight="700"
15+
line-height="36px"
16+
padding="0 0 0 16px"
17+
>
18+
<a href="{{ common.company.url }}" style="color:#001A39;text-decoration:none;display:inline-block">
19+
{{ common.company.name }}
20+
</a>
21+
</mj-text>
22+
</mj-column>
23+
</mj-section>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<mj-section background-color="#e5e7eb" padding="16px 24px">
2+
<mj-column width="25%" vertical-align="middle">
3+
<mj-text align="left" padding="0">
4+
<a href="{{ common.company.url }}" style="color:#001A39;text-decoration:none;display:inline-block">
5+
{% include '../../footer/partials/logo-table.mjml' %}
6+
</a>
7+
</mj-text>
8+
</mj-column>
9+
<mj-column width="75%" vertical-align="middle">
10+
<mj-text
11+
align="left"
12+
color="#001A39"
13+
font-size="28px"
14+
font-weight="700"
15+
line-height="36px"
16+
padding="0 0 0 16px"
17+
>
18+
<a href="{{ common.company.url }}" style="color:#001A39;text-decoration:none;display:inline-block">
19+
Webstack Weekly
20+
</a>
21+
</mj-text>
22+
</mj-column>
23+
</mj-section>

0 commit comments

Comments
 (0)