mirror of
https://github.com/lukevella/rallly.git
synced 2025-04-29 18:26:34 +02:00
update email templates and subjects
This commit is contained in:
parent
ae6da78c62
commit
ee120a04ff
14 changed files with 87 additions and 68 deletions
|
@ -96,7 +96,7 @@ const providers: Provider[] = [
|
||||||
if (user) {
|
if (user) {
|
||||||
await emailClient.sendTemplate("LoginEmail", {
|
await emailClient.sendTemplate("LoginEmail", {
|
||||||
to: email,
|
to: email,
|
||||||
subject: `${token} is your 6-digit code`,
|
subject: `${token} ist Dein sechsstelliger Eingabecode`,
|
||||||
props: {
|
props: {
|
||||||
name: user.name,
|
name: user.name,
|
||||||
magicLink: absoluteUrl("/auth/login", {
|
magicLink: absoluteUrl("/auth/login", {
|
||||||
|
|
|
@ -235,7 +235,7 @@ export const polls = router({
|
||||||
waitUntil(
|
waitUntil(
|
||||||
ctx.emailClient.sendTemplate("NewPollEmail", {
|
ctx.emailClient.sendTemplate("NewPollEmail", {
|
||||||
to: user.email,
|
to: user.email,
|
||||||
subject: `Let's find a date for ${poll.title}`,
|
subject: `Lasst uns einen Termin finden für ${poll.title}`,
|
||||||
props: {
|
props: {
|
||||||
title: poll.title,
|
title: poll.title,
|
||||||
name: user.name,
|
name: user.name,
|
||||||
|
@ -914,7 +914,7 @@ export const polls = router({
|
||||||
|
|
||||||
const emailToHost = waitUntil(
|
const emailToHost = waitUntil(
|
||||||
ctx.emailClient.sendTemplate("FinalizeHostEmail", {
|
ctx.emailClient.sendTemplate("FinalizeHostEmail", {
|
||||||
subject: `Date booked for ${poll.title}`,
|
subject: `Termin gefunden für ${poll.title}`,
|
||||||
to: poll.user.email,
|
to: poll.user.email,
|
||||||
props: {
|
props: {
|
||||||
name: poll.user.name,
|
name: poll.user.name,
|
||||||
|
@ -939,7 +939,7 @@ export const polls = router({
|
||||||
|
|
||||||
const emailsToParticipants = participantsToEmail.map((p) => {
|
const emailsToParticipants = participantsToEmail.map((p) => {
|
||||||
return ctx.emailClient.sendTemplate("FinalizeParticipantEmail", {
|
return ctx.emailClient.sendTemplate("FinalizeParticipantEmail", {
|
||||||
subject: `Date booked for ${poll.title}`,
|
subject: `Termin gefunden für ${poll.title}`,
|
||||||
to: p.email,
|
to: p.email,
|
||||||
props: {
|
props: {
|
||||||
name: p.name,
|
name: p.name,
|
||||||
|
|
|
@ -82,7 +82,7 @@ export const comments = router({
|
||||||
emailsToSend.push(
|
emailsToSend.push(
|
||||||
ctx.emailClient.sendTemplate("NewCommentEmail", {
|
ctx.emailClient.sendTemplate("NewCommentEmail", {
|
||||||
to: email,
|
to: email,
|
||||||
subject: `${authorName} has commented on ${poll.title}`,
|
subject: `${authorName} hat ${poll.title} kommentiert`,
|
||||||
props: {
|
props: {
|
||||||
name: watcher.user.name,
|
name: watcher.user.name,
|
||||||
authorName,
|
authorName,
|
||||||
|
|
|
@ -125,7 +125,7 @@ export const participants = router({
|
||||||
emailsToSend.push(
|
emailsToSend.push(
|
||||||
ctx.emailClient.sendTemplate("NewParticipantConfirmationEmail", {
|
ctx.emailClient.sendTemplate("NewParticipantConfirmationEmail", {
|
||||||
to: email,
|
to: email,
|
||||||
subject: `Thanks for responding to ${poll.title}`,
|
subject: `Danke für Deine Beteiligung an ${poll.title}`,
|
||||||
props: {
|
props: {
|
||||||
name,
|
name,
|
||||||
title: poll.title,
|
title: poll.title,
|
||||||
|
@ -162,7 +162,7 @@ export const participants = router({
|
||||||
emailsToSend.push(
|
emailsToSend.push(
|
||||||
ctx.emailClient.sendTemplate("NewParticipantEmail", {
|
ctx.emailClient.sendTemplate("NewParticipantEmail", {
|
||||||
to: email,
|
to: email,
|
||||||
subject: `${participant.name} has responded to ${poll.title}`,
|
subject: `${participant.name} hat in ${poll.title} geantwortet`,
|
||||||
props: {
|
props: {
|
||||||
name: watcher.user.name,
|
name: watcher.user.name,
|
||||||
participantName: participant.name,
|
participantName: participant.name,
|
||||||
|
|
|
@ -60,7 +60,7 @@ export const EmailLayout = ({
|
||||||
<Container style={containerStyles}>
|
<Container style={containerStyles}>
|
||||||
<Img src={logoUrl} alt="Rallly" width={128} />
|
<Img src={logoUrl} alt="Rallly" width={128} />
|
||||||
<Section style={sectionStyles}>
|
<Section style={sectionStyles}>
|
||||||
{recipientName ? <Text>Hi {recipientName},</Text> : null}
|
{recipientName ? <Text>Hallo {recipientName},</Text> : null}
|
||||||
{children}
|
{children}
|
||||||
{footNote ? (
|
{footNote ? (
|
||||||
<Text
|
<Text
|
||||||
|
@ -81,19 +81,29 @@ export const EmailLayout = ({
|
||||||
Home
|
Home
|
||||||
</Link>
|
</Link>
|
||||||
<span> • </span>
|
<span> • </span>
|
||||||
<Link style={linkStyles} href="https://twitter.com/ralllyco">
|
<Link
|
||||||
Twitter
|
style={linkStyles}
|
||||||
</Link>
|
href="https://www.gruene.de/service/impressum"
|
||||||
<span> • </span>
|
>
|
||||||
<Link style={linkStyles} href="https://github.com/lukevella/rallly">
|
Impressum
|
||||||
Github
|
|
||||||
</Link>
|
</Link>
|
||||||
<span> • </span>
|
<span> • </span>
|
||||||
<Link
|
<Link
|
||||||
style={linkStyles}
|
style={linkStyles}
|
||||||
href={`mailto:${process.env["SUPPORT_EMAIL"]}`}
|
href="https://www.gruene.de/service/datenschutz"
|
||||||
>
|
>
|
||||||
Contact
|
Datenschutz
|
||||||
|
</Link>
|
||||||
|
<span> • </span>
|
||||||
|
<Link
|
||||||
|
style={linkStyles}
|
||||||
|
href="https://netz.gruene.de/de/wissenswerk/2024-08/die-neue-termite"
|
||||||
|
>
|
||||||
|
Hilfe
|
||||||
|
</Link>
|
||||||
|
<span> • </span>
|
||||||
|
<Link style={linkStyles} href="https://rallly.co">
|
||||||
|
Diese Anwendung basiert auf Rallly
|
||||||
</Link>
|
</Link>
|
||||||
</Section>
|
</Section>
|
||||||
</Container>
|
</Container>
|
||||||
|
|
|
@ -29,9 +29,10 @@ export const NotificationEmail = ({
|
||||||
recipientName={name}
|
recipientName={name}
|
||||||
footNote={
|
footNote={
|
||||||
<>
|
<>
|
||||||
If you would like to stop receiving updates you can{" "}
|
Wenn Du nicht mehr über Neuigkeiten informiert werden möchtest, kannst
|
||||||
|
Du die Benachrichtigungen in den Einstellungen{" "}
|
||||||
<Link className="whitespace-nowrap" href={disableNotificationsUrl}>
|
<Link className="whitespace-nowrap" href={disableNotificationsUrl}>
|
||||||
turn notifications off
|
deaktivieren
|
||||||
</Link>
|
</Link>
|
||||||
.
|
.
|
||||||
</>
|
</>
|
||||||
|
@ -40,7 +41,7 @@ export const NotificationEmail = ({
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
<Text>
|
<Text>
|
||||||
<Button href={pollUrl}>View on {domain}</Button>
|
<Button href={pollUrl}>Du findest die Umfrage unter {domain}</Button>
|
||||||
</Text>
|
</Text>
|
||||||
</EmailLayout>
|
</EmailLayout>
|
||||||
);
|
);
|
||||||
|
|
|
@ -30,7 +30,7 @@ export const FinalizeHostEmail = ({
|
||||||
return (
|
return (
|
||||||
<EmailLayout ctx={ctx} recipientName={name} preview="Final date booked!">
|
<EmailLayout ctx={ctx} recipientName={name} preview="Final date booked!">
|
||||||
<Text>
|
<Text>
|
||||||
<strong>{title}</strong> has been booked for:
|
Es wurde ein Termin vereinbart für <strong>{title}</strong>:
|
||||||
</Text>
|
</Text>
|
||||||
<Section>
|
<Section>
|
||||||
<Row>
|
<Row>
|
||||||
|
@ -71,10 +71,11 @@ export const FinalizeHostEmail = ({
|
||||||
</Row>
|
</Row>
|
||||||
</Section>
|
</Section>
|
||||||
<Text>
|
<Text>
|
||||||
We've notified participants and sent them calendar invites.
|
Wir haben die Teilnehmer*innen benachrichtigt und ihnen
|
||||||
|
Kalendereinladungen zugeschickt.
|
||||||
</Text>
|
</Text>
|
||||||
<Text>
|
<Text>
|
||||||
<Button href={pollUrl}>View Event</Button>
|
<Button href={pollUrl}>Termin anzeigen</Button>
|
||||||
</Text>
|
</Text>
|
||||||
</EmailLayout>
|
</EmailLayout>
|
||||||
);
|
);
|
||||||
|
|
|
@ -32,8 +32,8 @@ export const FinalizeParticipantEmail = ({
|
||||||
return (
|
return (
|
||||||
<EmailLayout ctx={ctx} recipientName={name} preview="Final date booked!">
|
<EmailLayout ctx={ctx} recipientName={name} preview="Final date booked!">
|
||||||
<Text>
|
<Text>
|
||||||
<strong>{hostName}</strong> has booked <strong>{title}</strong> for the
|
<strong>{hostName}</strong> hat für <strong>{title}</strong> folgendes
|
||||||
following date:
|
Datum festgelegt:
|
||||||
</Text>
|
</Text>
|
||||||
<Section>
|
<Section>
|
||||||
<Row>
|
<Row>
|
||||||
|
@ -73,9 +73,9 @@ export const FinalizeParticipantEmail = ({
|
||||||
</Column>
|
</Column>
|
||||||
</Row>
|
</Row>
|
||||||
</Section>
|
</Section>
|
||||||
<Text>Please find attached a calendar invite for this event.</Text>
|
<Text>Anbei findest Du die Kalendereinladung für diesen Termin.</Text>
|
||||||
<Text>
|
<Text>
|
||||||
<Button href={pollUrl}>View Event</Button>
|
<Button href={pollUrl}>Termin anzeigen</Button>
|
||||||
</Text>
|
</Text>
|
||||||
</EmailLayout>
|
</EmailLayout>
|
||||||
);
|
);
|
||||||
|
|
|
@ -27,32 +27,37 @@ export const LoginEmail = ({
|
||||||
ctx={ctx}
|
ctx={ctx}
|
||||||
footNote={
|
footNote={
|
||||||
<>
|
<>
|
||||||
You're receiving this email because a request was made to login
|
Du hast diese E-Mail erhalten, da ein Login-Versuch bei{" "}
|
||||||
to <Domain ctx={ctx} />. If this wasn't you, let us know by
|
<Domain ctx={ctx} /> stattgefunden hat. Wenn Du das nicht warst, lass
|
||||||
replying to this email.
|
es uns bitte wissen und antworte auf diese E-Mail.
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
recipientName={name}
|
recipientName={name}
|
||||||
preview="Use this link to log in on this device."
|
preview="Use this link to log in on this device."
|
||||||
>
|
>
|
||||||
<Text>
|
<Text>
|
||||||
To log in to your account, please choose one of the following options:
|
um Dich in Deinen Account einzuloggen, wähle bitte eine der folgenden
|
||||||
|
Optionen:
|
||||||
</Text>
|
</Text>
|
||||||
<Card>
|
<Card>
|
||||||
<Heading>Option 1: Magic Link</Heading>
|
<Heading>Option 1: Magischer Link</Heading>
|
||||||
<Text>Click this magic link to log in on this device.</Text>
|
<Text>
|
||||||
|
Klicke auf den magischen Link um Dich auf diesem Gerät anzumelden.
|
||||||
|
</Text>
|
||||||
<Button href={magicLink} id="magicLink">
|
<Button href={magicLink} id="magicLink">
|
||||||
Log in to {ctx.domain}
|
Logge Dich ein auf {ctx.domain}
|
||||||
</Button>
|
</Button>
|
||||||
<Text light={true}>This link will expire in 15 minutes.</Text>
|
<Text light={true}>Dieser Link ist nur für 15 Minuten gültig. </Text>
|
||||||
</Card>
|
</Card>
|
||||||
<Card>
|
<Card>
|
||||||
<Heading>Option 2: Verification Code</Heading>
|
<Heading>Option 2: Verifizierungscode</Heading>
|
||||||
<Text>Enter this one-time 6-digit verification code.</Text>
|
<Text>
|
||||||
|
Gib diesen sechsstelligen Einmal-Code für die Verifizierung ein.
|
||||||
|
</Text>
|
||||||
<Heading as="h1" style={trackingWide} id="code">
|
<Heading as="h1" style={trackingWide} id="code">
|
||||||
{code}
|
{code}
|
||||||
</Heading>
|
</Heading>
|
||||||
<Text light={true}>This code will expire in 15 minutes.</Text>
|
<Text light={true}>Dieser Code ist nur für 15 Minuten gültig.</Text>
|
||||||
</Card>
|
</Card>
|
||||||
</EmailLayout>
|
</EmailLayout>
|
||||||
);
|
);
|
||||||
|
|
|
@ -26,7 +26,7 @@ export const NewCommentEmail = ({
|
||||||
preview="Go to your poll to see what they said."
|
preview="Go to your poll to see what they said."
|
||||||
>
|
>
|
||||||
<Text>
|
<Text>
|
||||||
<strong>{authorName}</strong> has commented on <strong>{title}</strong>.
|
<strong>{authorName}</strong> hat <strong>{title}</strong> kommentiert.
|
||||||
</Text>
|
</Text>
|
||||||
</NotificationEmail>
|
</NotificationEmail>
|
||||||
);
|
);
|
||||||
|
|
|
@ -20,24 +20,25 @@ export const NewParticipantConfirmationEmail = ({
|
||||||
ctx={ctx}
|
ctx={ctx}
|
||||||
footNote={
|
footNote={
|
||||||
<>
|
<>
|
||||||
You are receiving this email because a response was submitted on{" "}
|
Du erhältst diese E-Mail, da eine Antwort auf <Domain ctx={ctx} />{" "}
|
||||||
<Domain ctx={ctx} />. If this wasn't you, please ignore this
|
eingegangen ist. Wenn Du das nicht warst, ignoriere bitte diese
|
||||||
email.
|
E-Mail.
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
recipientName={name}
|
recipientName={name}
|
||||||
preview="To edit your response use the link below"
|
preview="To edit your response use the link below"
|
||||||
>
|
>
|
||||||
<Text>
|
<Text>
|
||||||
Your response to <strong>{title}</strong> has been submitted.
|
Deine Antwort auf <strong>{title}</strong> wurde erfolgreich
|
||||||
|
übermittelt.
|
||||||
</Text>
|
</Text>
|
||||||
<Text>
|
<Text>
|
||||||
While the poll is still open you can change your response using the link
|
Solange die Umfrage noch läuft, kannst Du Deine Antwort über den
|
||||||
below.
|
folgenden Link ändern oder anschauen:
|
||||||
</Text>
|
</Text>
|
||||||
<Section>
|
<Section>
|
||||||
<Button id="editSubmissionUrl" href={editSubmissionUrl}>
|
<Button id="editSubmissionUrl" href={editSubmissionUrl}>
|
||||||
Review response on {domain}
|
Ansehen auf {domain}
|
||||||
</Button>
|
</Button>
|
||||||
</Section>
|
</Section>
|
||||||
</EmailLayout>
|
</EmailLayout>
|
||||||
|
|
|
@ -26,8 +26,8 @@ export const NewParticipantEmail = ({
|
||||||
preview="Go to your poll to see the new response."
|
preview="Go to your poll to see the new response."
|
||||||
>
|
>
|
||||||
<Text>
|
<Text>
|
||||||
<strong>{participantName}</strong> has responded to{" "}
|
<strong>{participantName}</strong> hat an Deiner Umfrage{" "}
|
||||||
<strong>{title}</strong>.
|
<strong>{title}</strong> teilgenommen.
|
||||||
</Text>
|
</Text>
|
||||||
</NotificationEmail>
|
</NotificationEmail>
|
||||||
);
|
);
|
||||||
|
|
|
@ -23,9 +23,9 @@ const ShareLink = ({
|
||||||
return (
|
return (
|
||||||
<Link
|
<Link
|
||||||
href={`mailto:?subject=${encodeURIComponent(
|
href={`mailto:?subject=${encodeURIComponent(
|
||||||
`Availability for ${title}`,
|
`Terminfindung für ${title}`,
|
||||||
)}&body=${encodeURIComponent(
|
)}&body=${encodeURIComponent(
|
||||||
`Hi all,\nI'm trying to find the best date for ${title}.\nCan you please use the link below to choose your preferred dates:\n${participantLink}\nThank you.\n${name}`,
|
`Hallo,\nIch versuche einen passenden Termin für ${title} zu finden.\nKannst du bitte den Link unten benutzen um deine bevorzugten Termine anzugeben:\n${participantLink}\nDankeschön.\n${name}`,
|
||||||
)}`}
|
)}`}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
|
@ -46,22 +46,21 @@ export const NewPollEmail = ({
|
||||||
ctx={ctx}
|
ctx={ctx}
|
||||||
footNote={
|
footNote={
|
||||||
<>
|
<>
|
||||||
You are receiving this email because a new poll was created with this
|
Du erhältst diese E-Mail, weil eine neue Umfrage unter Angabe dieser
|
||||||
email address on <Link href={baseUrl}>{domain}</Link>. If this
|
E-Mail-Adresse auf <Link href={baseUrl}>{domain}</Link> erstellt
|
||||||
wasn't you, please ignore this email.
|
wurde. Falls dies nicht von dir veranlasst wurde, ignoriere bitte
|
||||||
|
diese E-Mail.
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
recipientName={name}
|
recipientName={name}
|
||||||
preview="Share your participant link to start collecting responses."
|
preview="Share your participant link to start collecting responses."
|
||||||
>
|
>
|
||||||
<Text>
|
<Text>Deine Umfrage wurde erfolgreich angelegt!</Text>
|
||||||
Your poll has been successfully created! Here are the details:
|
|
||||||
</Text>
|
|
||||||
<Card>
|
<Card>
|
||||||
<Text>
|
<Text>
|
||||||
<strong>Title:</strong> {title}
|
<strong>Titel:</strong> {title}
|
||||||
<br />
|
<br />
|
||||||
<strong>Invite Link:</strong>{" "}
|
<strong>Einladungslink:</strong>{" "}
|
||||||
<Link href={participantLink}>{participantLink}</Link>
|
<Link href={participantLink}>{participantLink}</Link>
|
||||||
</Text>
|
</Text>
|
||||||
<Text>
|
<Text>
|
||||||
|
@ -70,18 +69,19 @@ export const NewPollEmail = ({
|
||||||
name={name}
|
name={name}
|
||||||
participantLink={participantLink}
|
participantLink={participantLink}
|
||||||
>
|
>
|
||||||
Share via email
|
Per E-Mail teilen
|
||||||
</ShareLink>
|
</ShareLink>
|
||||||
</Text>
|
</Text>
|
||||||
</Card>
|
</Card>
|
||||||
<Text>
|
<Text>
|
||||||
To invite participants to your poll, simply share the{" "}
|
Um Teilnehmer*innen zu deiner Umfrage einzuladen, teile einfach den oben
|
||||||
<strong>Invite Link</strong> above with them. They'll be able to
|
genannten <strong>Einladungslink</strong> mit ihnen. Sie können dann für
|
||||||
vote on their preferred meeting times and dates.
|
ihre bevorzugten Termine und Zeiten abstimmen.
|
||||||
</Text>
|
</Text>
|
||||||
<Text>
|
<Text>
|
||||||
If you need to make any changes to your poll, or if you want to see the
|
Wenn du Änderungen an deiner Umfrage vornehmen möchtest oder die
|
||||||
results so far, just click on the button below:
|
bisherigen Ergebnisse einsehen willst, klicke einfach auf den folgenden
|
||||||
|
Button:
|
||||||
</Text>
|
</Text>
|
||||||
<Text>
|
<Text>
|
||||||
<Button href={adminLink}>Manage Poll →</Button>
|
<Button href={adminLink}>Manage Poll →</Button>
|
||||||
|
|
|
@ -21,20 +21,21 @@ export const RegisterEmail = ({
|
||||||
ctx={ctx}
|
ctx={ctx}
|
||||||
footNote={
|
footNote={
|
||||||
<>
|
<>
|
||||||
You're receiving this email because a request was made to
|
Du erhältst diese E-Mail, da eine Registrierungsanfrage auf{" "}
|
||||||
register an account on <Domain ctx={ctx} />. If this wasn't you,
|
<Domain ctx={ctx} /> eingegangen ist. Wenn Du das nicht warst,
|
||||||
please ignore this email.
|
ignoriere bitte diese E-Mail.
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
preview={`Your 6-digit code is: ${code}`}
|
preview={`Your 6-digit code is: ${code}`}
|
||||||
>
|
>
|
||||||
<Text>
|
<Text>
|
||||||
Please use the following 6-digit verification code to verify your email:
|
Bitte nutze folgenden sechsstelligen Code um Deine E-Mailadresse zu
|
||||||
|
verifizieren:
|
||||||
</Text>
|
</Text>
|
||||||
<Heading as="h1" style={{ ...trackingWide }} id="code">
|
<Heading as="h1" style={{ ...trackingWide }} id="code">
|
||||||
{code}
|
{code}
|
||||||
</Heading>
|
</Heading>
|
||||||
<Text>This code is valid for 15 minutes</Text>
|
<Text>Dieser Code ist nur für 15 Minuten gültig.</Text>
|
||||||
</EmailLayout>
|
</EmailLayout>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue