From 8786dac2b36c8d03f365a950ab60fff462b2cdf9 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Mon, 27 Jan 2025 19:40:59 +0100 Subject: [PATCH 1/6] add memo variable to transaction received email --- backend/src/emails/sendEmailVariants.test.ts | 2 ++ backend/src/emails/sendEmailVariants.ts | 2 ++ backend/src/graphql/resolver/TransactionResolver.ts | 1 + .../src/graphql/resolver/util/settlePendingSenderTransaction.ts | 1 + 4 files changed, 6 insertions(+) diff --git a/backend/src/emails/sendEmailVariants.test.ts b/backend/src/emails/sendEmailVariants.test.ts index aee479441..76705deb9 100644 --- a/backend/src/emails/sendEmailVariants.test.ts +++ b/backend/src/emails/sendEmailVariants.test.ts @@ -562,6 +562,7 @@ describe('sendEmailVariants', () => { lastName: 'Lustig', email: 'peter@lustig.de', language: 'en', + memo: 'Du bist schon lustiger ;)', senderFirstName: 'Bibi', senderLastName: 'Bloxberg', senderEmail: 'bibi@bloxberg.de', @@ -580,6 +581,7 @@ describe('sendEmailVariants', () => { firstName: 'Peter', lastName: 'Lustig', locale: 'en', + memo: 'Du bist schon lustiger ;)', senderFirstName: 'Bibi', senderLastName: 'Bloxberg', senderEmail: 'bibi@bloxberg.de', diff --git a/backend/src/emails/sendEmailVariants.ts b/backend/src/emails/sendEmailVariants.ts index 8bcc9accd..5276a473a 100644 --- a/backend/src/emails/sendEmailVariants.ts +++ b/backend/src/emails/sendEmailVariants.ts @@ -247,6 +247,7 @@ export const sendTransactionReceivedEmail = (data: { senderFirstName: string senderLastName: string senderEmail: string + memo: string transactionAmount: Decimal }): Promise | boolean | null> => { return sendEmailTranslated({ @@ -256,6 +257,7 @@ export const sendTransactionReceivedEmail = (data: { firstName: data.firstName, lastName: data.lastName, locale: data.language, + memo: data.memo, senderFirstName: data.senderFirstName, senderLastName: data.senderLastName, senderEmail: data.senderEmail, diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index 26e4dcbcd..542fcbb93 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -190,6 +190,7 @@ export const executeTransaction = async ( lastName: recipient.lastName, email: recipient.emailContact.email, language: recipient.language, + memo, senderFirstName: sender.firstName, senderLastName: sender.lastName, senderEmail: sender.emailContact.email, diff --git a/backend/src/graphql/resolver/util/settlePendingSenderTransaction.ts b/backend/src/graphql/resolver/util/settlePendingSenderTransaction.ts index b9c7d8b36..0e293c56c 100644 --- a/backend/src/graphql/resolver/util/settlePendingSenderTransaction.ts +++ b/backend/src/graphql/resolver/util/settlePendingSenderTransaction.ts @@ -119,6 +119,7 @@ export async function settlePendingSenderTransaction( lastName: recipient.lastName, email: recipient.emailContact.email, language: recipient.language, + memo, senderFirstName: sender.firstName, senderLastName: sender.lastName, senderEmail: sender.emailContact.email, From c3d9cb2245d5a2404041e2bd8eabe9fb35fd3633 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 28 Jan 2025 14:59:37 +0100 Subject: [PATCH 2/6] update email template and tests --- .../sendEmailVariants.test.ts.snap | 83 +++++++++++++++---- backend/src/emails/sendEmailTranslated.ts | 2 +- .../src/emails/templates/includes/Chatbox.svg | 1 + .../templates/includes/answear_button.svg | 22 +++++ .../templates/includes/chatbox-icon.pug | 2 + .../src/emails/templates/includes/footer.pug | 7 +- .../src/emails/templates/includes/webflow.css | 25 +++++- .../templates/transactionReceived/html.pug | 13 ++- backend/src/locales/de.json | 2 + backend/src/locales/en.json | 2 + 10 files changed, 136 insertions(+), 23 deletions(-) create mode 100644 backend/src/emails/templates/includes/Chatbox.svg create mode 100644 backend/src/emails/templates/includes/answear_button.svg create mode 100644 backend/src/emails/templates/includes/chatbox-icon.pug diff --git a/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap b/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap index 00ec365f0..ad24ba81e 100644 --- a/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap +++ b/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap @@ -124,6 +124,10 @@ exports[`sendEmailVariants sendAccountActivationEmail result has the correct htm line-break: anywhere; margin-bottom: 40px; } +.button-5:hover { + transform: translateY(-5px); + box-shadow: 20px 25px 30px rgba(56, 56, 56, 0.4); +} .slink { width: 150px; } @@ -160,7 +164,8 @@ If the validity of the link has already expired, you can have a new link sent to
\\"facebook\\"\\"Telegram\\"\\"Twitter\\"\\"youtube\\"
-
If you have any further questions, please contact our support.
support@gradido.net\\"Gradido +
If you have any further questions, please contact our support.
support@gradido.net +
\\"Gradido
Impressum

Privacy Policy
Gradido-Akademie
Institut für Wirtschaftsbionik
Pfarrweg 2
74653 Künzelsau
Deutschland


@@ -295,6 +300,10 @@ exports[`sendEmailVariants sendAccountMultiRegistrationEmail calls "sendEmailTra line-break: anywhere; margin-bottom: 40px; } +.button-5:hover { + transform: translateY(-5px); + box-shadow: 20px 25px 30px rgba(56, 56, 56, 0.4); +} .slink { width: 150px; } @@ -329,7 +338,8 @@ exports[`sendEmailVariants sendAccountMultiRegistrationEmail calls "sendEmailTra
\\"facebook\\"\\"Telegram\\"\\"Twitter\\"\\"youtube\\"
-
If you have any further questions, please contact our support.
support@gradido.net\\"Gradido +
If you have any further questions, please contact our support.
support@gradido.net +
\\"Gradido
Impressum

Privacy Policy
Gradido-Akademie
Institut für Wirtschaftsbionik
Pfarrweg 2
74653 Künzelsau
Deutschland


@@ -464,6 +474,10 @@ exports[`sendEmailVariants sendAddedContributionMessageEmail result has the corr line-break: anywhere; margin-bottom: 40px; } +.button-5:hover { + transform: translateY(-5px); + box-shadow: 20px 25px 30px rgba(56, 56, 56, 0.4); +} .slink { width: 150px; } @@ -495,7 +509,8 @@ exports[`sendEmailVariants sendAddedContributionMessageEmail result has the corr
\\"facebook\\"\\"Telegram\\"\\"Twitter\\"\\"youtube\\"
-
If you have any further questions, please contact our support.
support@gradido.net\\"Gradido +
If you have any further questions, please contact our support.
support@gradido.net +
\\"Gradido
Impressum

Privacy Policy
Gradido-Akademie
Institut für Wirtschaftsbionik
Pfarrweg 2
74653 Künzelsau
Deutschland


@@ -630,6 +645,10 @@ exports[`sendEmailVariants sendContributionChangedByModeratorEmail result has th line-break: anywhere; margin-bottom: 40px; } +.button-5:hover { + transform: translateY(-5px); + box-shadow: 20px 25px 30px rgba(56, 56, 56, 0.4); +} .slink { width: 150px; } @@ -662,7 +681,8 @@ exports[`sendEmailVariants sendContributionChangedByModeratorEmail result has th
\\"facebook\\"\\"Telegram\\"\\"Twitter\\"\\"youtube\\"
-
If you have any further questions, please contact our support.
support@gradido.net\\"Gradido +
If you have any further questions, please contact our support.
support@gradido.net +
\\"Gradido
Impressum

Privacy Policy
Gradido-Akademie
Institut für Wirtschaftsbionik
Pfarrweg 2
74653 Künzelsau
Deutschland


@@ -797,6 +817,10 @@ exports[`sendEmailVariants sendContributionConfirmedEmail result has the correct line-break: anywhere; margin-bottom: 40px; } +.button-5:hover { + transform: translateY(-5px); + box-shadow: 20px 25px 30px rgba(56, 56, 56, 0.4); +} .slink { width: 150px; } @@ -829,7 +853,8 @@ exports[`sendEmailVariants sendContributionConfirmedEmail result has the correct
\\"facebook\\"\\"Telegram\\"\\"Twitter\\"\\"youtube\\"
-
If you have any further questions, please contact our support.
support@gradido.net\\"Gradido +
If you have any further questions, please contact our support.
support@gradido.net +
\\"Gradido
Impressum

Privacy Policy
Gradido-Akademie
Institut für Wirtschaftsbionik
Pfarrweg 2
74653 Künzelsau
Deutschland


@@ -964,6 +989,10 @@ exports[`sendEmailVariants sendContributionDeletedEmail result has the correct h line-break: anywhere; margin-bottom: 40px; } +.button-5:hover { + transform: translateY(-5px); + box-shadow: 20px 25px 30px rgba(56, 56, 56, 0.4); +} .slink { width: 150px; } @@ -996,7 +1025,8 @@ exports[`sendEmailVariants sendContributionDeletedEmail result has the correct h
\\"facebook\\"\\"Telegram\\"\\"Twitter\\"\\"youtube\\"
-
If you have any further questions, please contact our support.
support@gradido.net\\"Gradido +
If you have any further questions, please contact our support.
support@gradido.net +
\\"Gradido
Impressum

Privacy Policy
Gradido-Akademie
Institut für Wirtschaftsbionik
Pfarrweg 2
74653 Künzelsau
Deutschland


@@ -1131,6 +1161,10 @@ exports[`sendEmailVariants sendContributionDeniedEmail result has the correct ht line-break: anywhere; margin-bottom: 40px; } +.button-5:hover { + transform: translateY(-5px); + box-shadow: 20px 25px 30px rgba(56, 56, 56, 0.4); +} .slink { width: 150px; } @@ -1163,7 +1197,8 @@ exports[`sendEmailVariants sendContributionDeniedEmail result has the correct ht
\\"facebook\\"\\"Telegram\\"\\"Twitter\\"\\"youtube\\"
-
If you have any further questions, please contact our support.
support@gradido.net\\"Gradido +
If you have any further questions, please contact our support.
support@gradido.net +
\\"Gradido
Impressum

Privacy Policy
Gradido-Akademie
Institut für Wirtschaftsbionik
Pfarrweg 2
74653 Künzelsau
Deutschland


@@ -1298,6 +1333,10 @@ exports[`sendEmailVariants sendResetPasswordEmail result has the correct html as line-break: anywhere; margin-bottom: 40px; } +.button-5:hover { + transform: translateY(-5px); + box-shadow: 20px 25px 30px rgba(56, 56, 56, 0.4); +} .slink { width: 150px; } @@ -1334,7 +1373,8 @@ If the validity of the link has already expired, you can have a new link sent to
\\"facebook\\"\\"Telegram\\"\\"Twitter\\"\\"youtube\\"
-
If you have any further questions, please contact our support.
support@gradido.net\\"Gradido +
If you have any further questions, please contact our support.
support@gradido.net +
\\"Gradido
Impressum

Privacy Policy
Gradido-Akademie
Institut für Wirtschaftsbionik
Pfarrweg 2
74653 Künzelsau
Deutschland


@@ -1469,6 +1509,10 @@ exports[`sendEmailVariants sendTransactionLinkRedeemedEmail result has the corre line-break: anywhere; margin-bottom: 40px; } +.button-5:hover { + transform: translateY(-5px); + box-shadow: 20px 25px 30px rgba(56, 56, 56, 0.4); +} .slink { width: 150px; } @@ -1501,7 +1545,8 @@ exports[`sendEmailVariants sendTransactionLinkRedeemedEmail result has the corre
\\"facebook\\"\\"Telegram\\"\\"Twitter\\"\\"youtube\\"
-
If you have any further questions, please contact our support.
support@gradido.net\\"Gradido +
If you have any further questions, please contact our support.
support@gradido.net +
\\"Gradido
Impressum

Privacy Policy
Gradido-Akademie
Institut für Wirtschaftsbionik
Pfarrweg 2
74653 Künzelsau
Deutschland


@@ -1636,6 +1681,10 @@ exports[`sendEmailVariants sendTransactionReceivedEmail result has the correct h line-break: anywhere; margin-bottom: 40px; } +.button-5:hover { + transform: translateY(-5px); + box-shadow: 20px 25px 30px rgba(56, 56, 56, 0.4); +} .slink { width: 150px; } @@ -1653,10 +1702,15 @@ exports[`sendEmailVariants sendTransactionReceivedEmail result has the correct h

You have just received 37.40 GDD from Bibi Bloxberg (bibi@bloxberg.de).

-

Transaction details

-
You can find transaction details in your Gradido account.
To account -
Please do not reply to this email.
-
+

Message

+
+
Du bist schon lustiger ;)
+
+ + To account

Kind regards,
your Gradido team

@@ -1667,7 +1721,8 @@ exports[`sendEmailVariants sendTransactionReceivedEmail result has the correct h
\\"facebook\\"\\"Telegram\\"\\"Twitter\\"\\"youtube\\"
-
If you have any further questions, please contact our support.
support@gradido.net\\"Gradido +
If you have any further questions, please contact our support.
support@gradido.net +
\\"Gradido

Privacy Policy
Gradido-Akademie
Institut für Wirtschaftsbionik
Pfarrweg 2
74653 Künzelsau
Deutschland


diff --git a/backend/src/emails/sendEmailTranslated.ts b/backend/src/emails/sendEmailTranslated.ts index d61ff3339..fe0bb27e7 100644 --- a/backend/src/emails/sendEmailTranslated.ts +++ b/backend/src/emails/sendEmailTranslated.ts @@ -105,7 +105,7 @@ export const sendEmailTranslated = async ({ }) .catch((error: unknown) => { logger.error('Error sending notification email', error) - return false + return error }) return resultSend diff --git a/backend/src/emails/templates/includes/Chatbox.svg b/backend/src/emails/templates/includes/Chatbox.svg new file mode 100644 index 000000000..4eb68e0bb --- /dev/null +++ b/backend/src/emails/templates/includes/Chatbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/src/emails/templates/includes/answear_button.svg b/backend/src/emails/templates/includes/answear_button.svg new file mode 100644 index 000000000..f45fedc90 --- /dev/null +++ b/backend/src/emails/templates/includes/answear_button.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + Jetzt antworten + + + diff --git a/backend/src/emails/templates/includes/chatbox-icon.pug b/backend/src/emails/templates/includes/chatbox-icon.pug new file mode 100644 index 000000000..0f09e86ff --- /dev/null +++ b/backend/src/emails/templates/includes/chatbox-icon.pug @@ -0,0 +1,2 @@ +svg(xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 -960 960 960" style="vertical-align: middle; margin-right: 8px;") + path(d="M240-400h480v-80H240v80Zm0-120h480v-80H240v80Zm0-120h480v-80H240v80ZM880-80 720-240H160q-33 0-56.5-23.5T80-320v-480q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v720ZM160-320h594l46 45v-525H160v480Zm0 0v-480 480Z" fill="#e8eaed") \ No newline at end of file diff --git a/backend/src/emails/templates/includes/footer.pug b/backend/src/emails/templates/includes/footer.pug index 5827b203b..91a0e4543 100644 --- a/backend/src/emails/templates/includes/footer.pug +++ b/backend/src/emails/templates/includes/footer.pug @@ -44,9 +44,10 @@ footer class="footer_p2" href='mailto:' + t("emails.footer.supportEmail") )= t("emails.footer.supportEmail") - img.image( - alt="Gradido Logo" - src="https://gdd.gradido.net/img/brand/green.png" + div + img.image( + alt="Gradido Logo" + src="https://gdd.gradido.net/img/brand/green.png" ) div a( diff --git a/backend/src/emails/templates/includes/webflow.css b/backend/src/emails/templates/includes/webflow.css index 02e7fc4e0..6a0f99c02 100644 --- a/backend/src/emails/templates/includes/webflow.css +++ b/backend/src/emails/templates/includes/webflow.css @@ -51,7 +51,8 @@ h2 { } .button-3, -.button-4 { +.button-4, +.button-5 { display: inline-block; padding: 9px 15px; color: white; @@ -70,6 +71,28 @@ h2 { background-image: radial-gradient(circle farthest-corner at 0% 0%, #616161, #c2c2c2); } +.button-5 { + background: linear-gradient(135deg, #53900c, #6e6e6e); + font-size: 20px; + font-weight: 600; + color: #f5f5f5; + width: auto; + box-shadow: 20px 20px 25px; + transition: all 0.3s ease; +} + +.button-5:hover { + transform: translateY(-5px); + box-shadow: 20px 25px 30px rgba(56, 56, 56, 0.4); +} + +.child-right { + text-align: right; +} +.child-left { + text-align: left; +} + .socialmedia { display: flex; margin-top: 40px; diff --git a/backend/src/emails/templates/transactionReceived/html.pug b/backend/src/emails/templates/transactionReceived/html.pug index 5370ec03e..a9cf92ebe 100644 --- a/backend/src/emails/templates/transactionReceived/html.pug +++ b/backend/src/emails/templates/transactionReceived/html.pug @@ -6,10 +6,15 @@ block content include ../includes/salutation.pug p= t('emails.transactionReceived.haveReceivedAmountGDDFrom', { transactionAmount, senderFirstName, senderLastName, senderEmail }) .content - h2= t('emails.general.transactionDetails') - div(class="p_content")= t('emails.general.detailsYouFindOnLinkToYourAccount') + h2= t('emails.general.message') + .child-left + div(class="p_content")= memo + .child-right + a.button-5(href= `mailto:${senderEmail}?subject=${encodeURIComponent(t('emails.transactionReceived.subject', { senderFirstName, senderLastName, transactionAmount }))}`) + include ../includes/chatbox-icon.pug + span #{t('emails.general.answerNow')} - a.button-3(href=`${communityURL}/transactions`) #{t('emails.general.toAccount')} + a.button-3(href=`${communityURL}/transactions`) #{t('emails.general.toAccount')} - include ../includes/doNotReply.pug + diff --git a/backend/src/locales/de.json b/backend/src/locales/de.json index c99e1657e..08b5a885a 100644 --- a/backend/src/locales/de.json +++ b/backend/src/locales/de.json @@ -56,6 +56,7 @@ }, "general": { "amountGDD": "Betrag: {amountGDD} GDD", + "answerNow": "Jetzt antworten", "completeRegistration": "Registrierung abschließen", "contribution": "Gemeinwohl-Beitrag: {contributionMemo}", "contributionDetails": "Beitragsdetails", @@ -63,6 +64,7 @@ "helloName": "Hallo {firstName} {lastName},", "linkValidity": "Der Link hat eine Gültigkeit von {hours} Stunden.\nSollte die Gültigkeit des Links bereits abgelaufen sein, kannst du dir hier einen neuen Link schicken lassen.", "linkValidityWithMinutes": "Der Link hat eine Gültigkeit von {hours} Stunden und {minutes} Minuten.\nSollte die Gültigkeit des Links bereits abgelaufen sein, kannst du dir hier einen neuen Link schicken lassen.", + "message": "Nachricht", "newLink": "Neuer Link", "orCopyLink": "Oder kopiere den Link in dein Browserfenster.", "pleaseDoNotReply": "Bitte antworte nicht auf diese E-Mail.", diff --git a/backend/src/locales/en.json b/backend/src/locales/en.json index 15a56577c..43c48262b 100644 --- a/backend/src/locales/en.json +++ b/backend/src/locales/en.json @@ -56,6 +56,7 @@ }, "general": { "amountGDD": "Amount: {amountGDD} GDD", + "answerNow": "Reply", "completeRegistration": "Complete registration", "contribution": "Contribution: : {contributionMemo}", "contributionDetails": "Contribution details", @@ -63,6 +64,7 @@ "helloName": "Hello {firstName} {lastName},", "linkValidity": "The link has a validity of {hours} hours.\nIf the validity of the link has already expired, you can have a new link sent to you here.", "linkValidityWithMinutes": "The link has a validity of {hours} hours and {minutes} minutes.\nIf the validity of the link has already expired, you can have a new link sent to you here.", + "message": "Message", "newLink": "New link", "orCopyLink": "Or copy the link into your browser window.", "pleaseDoNotReply": "Please do not reply to this email.", From 546948d7a923f0c5514b3554bf925f67702aa53d Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 28 Jan 2025 17:19:56 +0100 Subject: [PATCH 3/6] add RE --- backend/src/emails/templates/transactionReceived/html.pug | 2 +- backend/src/locales/de.json | 1 + backend/src/locales/en.json | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/src/emails/templates/transactionReceived/html.pug b/backend/src/emails/templates/transactionReceived/html.pug index a9cf92ebe..9605dae5d 100644 --- a/backend/src/emails/templates/transactionReceived/html.pug +++ b/backend/src/emails/templates/transactionReceived/html.pug @@ -10,7 +10,7 @@ block content .child-left div(class="p_content")= memo .child-right - a.button-5(href= `mailto:${senderEmail}?subject=${encodeURIComponent(t('emails.transactionReceived.subject', { senderFirstName, senderLastName, transactionAmount }))}`) + a.button-5(href= `mailto:${senderEmail}?subject=${encodeURIComponent(t('emails.transactionReceived.replySubject', { senderFirstName, senderLastName, transactionAmount }))}`) include ../includes/chatbox-icon.pug span #{t('emails.general.answerNow')} diff --git a/backend/src/locales/de.json b/backend/src/locales/de.json index 08b5a885a..bd161a521 100644 --- a/backend/src/locales/de.json +++ b/backend/src/locales/de.json @@ -90,6 +90,7 @@ "transactionReceived": { "haveReceivedAmountGDDFrom": "du hast soeben {transactionAmount} GDD von {senderFirstName} {senderLastName} ({senderEmail}) erhalten.", "subject": "{senderFirstName} {senderLastName} hat dir {transactionAmount} Gradido gesendet", + "replySubject": "RE: {senderFirstName} {senderLastName} hat dir {transactionAmount} Gradido gesendet", "title": "{senderFirstName} {senderLastName} hat dir {transactionAmount} Gradido gesendet" } }, diff --git a/backend/src/locales/en.json b/backend/src/locales/en.json index 43c48262b..a3c59e677 100644 --- a/backend/src/locales/en.json +++ b/backend/src/locales/en.json @@ -89,6 +89,7 @@ }, "transactionReceived": { "haveReceivedAmountGDDFrom": "You have just received {transactionAmount} GDD from {senderFirstName} {senderLastName} ({senderEmail}).", + "replySubject": "RE: {senderFirstName} {senderLastName} has sent you {transactionAmount} Gradido", "subject": "{senderFirstName} {senderLastName} has sent you {transactionAmount} Gradido", "title": "{senderFirstName} {senderLastName} has sent you {transactionAmount} Gradido" } From f3f636858bdabf141bd27a575495df5f97b3fc6e Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 28 Jan 2025 17:51:26 +0100 Subject: [PATCH 4/6] fix test --- backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap b/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap index ad24ba81e..6da26b327 100644 --- a/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap +++ b/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap @@ -1706,7 +1706,7 @@ exports[`sendEmailVariants sendTransactionReceivedEmail result has the correct h
Du bist schon lustiger ;)
-
+ From 61f67388d1eff0b28c576eb5962489cd2abe12ae Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 28 Jan 2025 18:17:30 +0100 Subject: [PATCH 5/6] add mailto --- backend/src/locales/de.json | 2 +- backend/src/locales/en.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/locales/de.json b/backend/src/locales/de.json index bd161a521..b37604321 100644 --- a/backend/src/locales/de.json +++ b/backend/src/locales/de.json @@ -88,7 +88,7 @@ "title": "{senderFirstName} {senderLastName} hat deinen Gradido-Link eingelöst" }, "transactionReceived": { - "haveReceivedAmountGDDFrom": "du hast soeben {transactionAmount} GDD von {senderFirstName} {senderLastName} ({senderEmail}) erhalten.", + "haveReceivedAmountGDDFrom": "du hast soeben {transactionAmount} GDD von {senderFirstName} {senderLastName} (mailto:{senderEmail}) erhalten.", "subject": "{senderFirstName} {senderLastName} hat dir {transactionAmount} Gradido gesendet", "replySubject": "RE: {senderFirstName} {senderLastName} hat dir {transactionAmount} Gradido gesendet", "title": "{senderFirstName} {senderLastName} hat dir {transactionAmount} Gradido gesendet" diff --git a/backend/src/locales/en.json b/backend/src/locales/en.json index a3c59e677..18b703d25 100644 --- a/backend/src/locales/en.json +++ b/backend/src/locales/en.json @@ -88,7 +88,7 @@ "title": "{senderFirstName} {senderLastName} has redeemed your Gradido link" }, "transactionReceived": { - "haveReceivedAmountGDDFrom": "You have just received {transactionAmount} GDD from {senderFirstName} {senderLastName} ({senderEmail}).", + "haveReceivedAmountGDDFrom": "You have just received {transactionAmount} GDD from {senderFirstName} {senderLastName} (mailto:{senderEmail}).", "replySubject": "RE: {senderFirstName} {senderLastName} has sent you {transactionAmount} Gradido", "subject": "{senderFirstName} {senderLastName} has sent you {transactionAmount} Gradido", "title": "{senderFirstName} {senderLastName} has sent you {transactionAmount} Gradido" From f362eafb00df8c5b0fa52db6f5e4b870dc096bdf Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Wed, 29 Jan 2025 12:58:18 +0100 Subject: [PATCH 6/6] refactor template --- .../sendEmailVariants.test.ts.snap | 9 ++++----- backend/src/emails/sendEmailTranslated.ts | 5 +++++ .../emails/templates/includes/chatbox-icon.png | Bin 0 -> 323 bytes .../emails/templates/includes/chatbox-icon.pug | 8 ++++++-- .../src/emails/templates/includes/webflow.css | 7 +++++++ .../templates/transactionReceived/html.pug | 16 +++++++++++++--- backend/src/locales/de.json | 4 ++-- backend/src/locales/en.json | 2 +- 8 files changed, 38 insertions(+), 13 deletions(-) create mode 100644 backend/src/emails/templates/includes/chatbox-icon.png diff --git a/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap b/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap index 6da26b327..0e4e4ba7c 100644 --- a/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap +++ b/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap @@ -1699,17 +1699,16 @@ exports[`sendEmailVariants sendTransactionReceivedEmail result has the correct h

Bibi Bloxberg has sent you 37.40 Gradido

Hello Peter Lustig,

-

You have just received 37.40 GDD from Bibi Bloxberg (bibi@bloxberg.de).

+

You have just received 37.40 GDD from Bibi Bloxberg (bibi@bloxberg.de). +

Message

Du bist schon lustiger ;)
- +
To account

Kind regards,
your Gradido team diff --git a/backend/src/emails/sendEmailTranslated.ts b/backend/src/emails/sendEmailTranslated.ts index fe0bb27e7..f78ecf805 100644 --- a/backend/src/emails/sendEmailTranslated.ts +++ b/backend/src/emails/sendEmailTranslated.ts @@ -99,6 +99,11 @@ export const sendEmailTranslated = async ({ path: path.join(__dirname, 'templates/includes/youtube-icon.png'), cid: 'youtubeicon', }, + { + filename: 'chatbox-icon.png', + path: path.join(__dirname, 'templates/includes/chatbox-icon.png'), + cid: 'chatboxicon', + }, ], }, locals, // the 'locale' in here seems not to be used by 'email-template', because it doesn't work if the language isn't set before by 'i18n.setLocale' diff --git a/backend/src/emails/templates/includes/chatbox-icon.png b/backend/src/emails/templates/includes/chatbox-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a25c7c209cb79912e5adab4b7732ca9858955e17 GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9F5he4R}c>anMprB-l zYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&Kt&fkT^vI^I^Rxpt*$!I@bcilmcXRrOkP_`0>HiiLiq(xj+>07kDqMfHY{##Q zlh#;pR2gl4c_ETL@xfeC%dqcrr^TpWs_@NqndEL~zIij>tP8)bE11vjc5$h#TT}z| O8-u5-pUXO@geCw$1$z7d literal 0 HcmV?d00001 diff --git a/backend/src/emails/templates/includes/chatbox-icon.pug b/backend/src/emails/templates/includes/chatbox-icon.pug index 0f09e86ff..62775b0f0 100644 --- a/backend/src/emails/templates/includes/chatbox-icon.pug +++ b/backend/src/emails/templates/includes/chatbox-icon.pug @@ -1,2 +1,6 @@ -svg(xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 -960 960 960" style="vertical-align: middle; margin-right: 8px;") - path(d="M240-400h480v-80H240v80Zm0-120h480v-80H240v80Zm0-120h480v-80H240v80ZM880-80 720-240H160q-33 0-56.5-23.5T80-320v-480q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v720ZM160-320h594l46 45v-525H160v480Zm0 0v-480 480Z" fill="#e8eaed") \ No newline at end of file +span.chatbox-wrapper + img.bi-chatbox( + alt="chatbox" + loading="lazy" + src="cid:chatboxicon" + ) \ No newline at end of file diff --git a/backend/src/emails/templates/includes/webflow.css b/backend/src/emails/templates/includes/webflow.css index 6a0f99c02..a78c0ed4f 100644 --- a/backend/src/emails/templates/includes/webflow.css +++ b/backend/src/emails/templates/includes/webflow.css @@ -86,6 +86,13 @@ h2 { box-shadow: 20px 25px 30px rgba(56, 56, 56, 0.4); } +.chatbox-wrapper { + margin-right: 8px; +} +.bi-chatbox { + margin-bottom: -5px; +} + .child-right { text-align: right; } diff --git a/backend/src/emails/templates/transactionReceived/html.pug b/backend/src/emails/templates/transactionReceived/html.pug index 9605dae5d..4f9aa9c31 100644 --- a/backend/src/emails/templates/transactionReceived/html.pug +++ b/backend/src/emails/templates/transactionReceived/html.pug @@ -1,16 +1,26 @@ extend ../layout.pug -block content +block content + mixin mailto(email, subject) + - var formattedSubject = encodeURIComponent(subject) + a(class!=attributes.class href=`mailto:${email}?subject=${formattedSubject}`) + block + + - var subject= t('emails.transactionReceived.replySubject', { senderFirstName, senderLastName, transactionAmount }) h2= t('emails.transactionReceived.title', { senderFirstName, senderLastName, transactionAmount }) .text-block include ../includes/salutation.pug - p= t('emails.transactionReceived.haveReceivedAmountGDDFrom', { transactionAmount, senderFirstName, senderLastName, senderEmail }) + p + = t('emails.transactionReceived.haveReceivedAmountGDDFrom', { transactionAmount, senderFirstName, senderLastName }) + | ( + +mailto(senderEmail, subject)=senderEmail + |). .content h2= t('emails.general.message') .child-left div(class="p_content")= memo .child-right - a.button-5(href= `mailto:${senderEmail}?subject=${encodeURIComponent(t('emails.transactionReceived.replySubject', { senderFirstName, senderLastName, transactionAmount }))}`) + +mailto(senderEmail, subject)(class="button-5") include ../includes/chatbox-icon.pug span #{t('emails.general.answerNow')} diff --git a/backend/src/locales/de.json b/backend/src/locales/de.json index b37604321..8c0c8ff0c 100644 --- a/backend/src/locales/de.json +++ b/backend/src/locales/de.json @@ -88,9 +88,9 @@ "title": "{senderFirstName} {senderLastName} hat deinen Gradido-Link eingelöst" }, "transactionReceived": { - "haveReceivedAmountGDDFrom": "du hast soeben {transactionAmount} GDD von {senderFirstName} {senderLastName} (mailto:{senderEmail}) erhalten.", + "haveReceivedAmountGDDFrom": "du hast soeben {transactionAmount} GDD erhalten von {senderFirstName} {senderLastName}", "subject": "{senderFirstName} {senderLastName} hat dir {transactionAmount} Gradido gesendet", - "replySubject": "RE: {senderFirstName} {senderLastName} hat dir {transactionAmount} Gradido gesendet", + "replySubject": "Re: {senderFirstName} {senderLastName} hat dir {transactionAmount} Gradido gesendet", "title": "{senderFirstName} {senderLastName} hat dir {transactionAmount} Gradido gesendet" } }, diff --git a/backend/src/locales/en.json b/backend/src/locales/en.json index 18b703d25..9b6b2a4cf 100644 --- a/backend/src/locales/en.json +++ b/backend/src/locales/en.json @@ -88,7 +88,7 @@ "title": "{senderFirstName} {senderLastName} has redeemed your Gradido link" }, "transactionReceived": { - "haveReceivedAmountGDDFrom": "You have just received {transactionAmount} GDD from {senderFirstName} {senderLastName} (mailto:{senderEmail}).", + "haveReceivedAmountGDDFrom": "You have just received {transactionAmount} GDD from {senderFirstName} {senderLastName}", "replySubject": "RE: {senderFirstName} {senderLastName} has sent you {transactionAmount} Gradido", "subject": "{senderFirstName} {senderLastName} has sent you {transactionAmount} Gradido", "title": "{senderFirstName} {senderLastName} has sent you {transactionAmount} Gradido"