Skip to content

Commit

Permalink
feat: custom email message
Browse files Browse the repository at this point in the history
  • Loading branch information
stonith404 committed Dec 15, 2022
1 parent bfb47ba commit 0616a68
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 10 deletions.
6 changes: 6 additions & 0 deletions backend/prisma/seed/config.seed.ts
Expand Up @@ -60,6 +60,12 @@ const configVariables: Prisma.ConfigCreateInput[] = [
value: "false",
secret: false,
},
{
key: "EMAIL_MESSAGE",
description: "Message which gets sent to the recipients. {creator} and {shareUrl} will be replaced with the creator's name and the share URL.",
type: "text",
value: "Hey!\n{creator} shared some files with you. View or download the files with this link: {shareUrl}\nShared securely with Pingvin Share 🐧",
},
{
key: "SMTP_HOST",
description: "Host of the SMTP server",
Expand Down
10 changes: 8 additions & 2 deletions backend/src/config/config.service.ts
Expand Up @@ -23,7 +23,8 @@ export class ConfigService {

if (configVariable.type == "number") return parseInt(configVariable.value);
if (configVariable.type == "boolean") return configVariable.value == "true";
if (configVariable.type == "string") return configVariable.value;
if (configVariable.type == "string" || configVariable.type == "text")
return configVariable.value;
}

async listForAdmin() {
Expand All @@ -46,10 +47,15 @@ export class ConfigService {
if (!configVariable || configVariable.locked)
throw new NotFoundException("Config variable not found");

if (typeof value != configVariable.type)
if (
typeof value != configVariable.type &&
typeof value == "string" &&
configVariable.type != "text"
) {
throw new BadRequestException(
`Config variable must be of type ${configVariable.type}`
);
}

const updatedVariable = await this.prisma.config.update({
where: { key },
Expand Down
6 changes: 5 additions & 1 deletion backend/src/email/email.service.ts
Expand Up @@ -28,7 +28,11 @@ export class EmailService {
from: `"Pingvin Share" <${this.config.get("SMTP_EMAIL")}>`,
to: recipientEmail,
subject: "Files shared with you",
text: `Hey!\n${creator.username} shared some files with you. View or dowload the files with this link: ${shareUrl}\nShared securely with Pingvin Share 🐧`,
text: this.config
.get("EMAIL_MESSAGE")
.replaceAll("\\n", "\n")
.replaceAll("{creator}", creator.username)
.replaceAll("{shareUrl}", shareUrl),
});
}
}
15 changes: 12 additions & 3 deletions frontend/src/components/admin/AdminConfigTable.tsx
Expand Up @@ -73,9 +73,18 @@ const AdminConfigTable = () => {
</Text>
</td>
<td>
{configVariable.obscured
? "•".repeat(configVariable.value.length)
: configVariable.value}
<Text
style={{
whiteSpace: "nowrap",
overflow: "hidden",
textOverflow: "ellipsis",
maxWidth: "40ch",
}}
>
{configVariable.obscured
? "•".repeat(configVariable.value.length)
: configVariable.value}
</Text>
</td>
<td>
<Group position="right">
Expand Down
14 changes: 11 additions & 3 deletions frontend/src/components/admin/showUpdateConfigVariableModal.tsx
Expand Up @@ -7,6 +7,7 @@ import {
Space,
Stack,
Text,
Textarea,
TextInput,
Title,
} from "@mantine/core";
Expand Down Expand Up @@ -45,6 +46,7 @@ const Body = ({
const form = useForm({
initialValues: {
stringValue: configVariable.value,
textValue: configVariable.value,
numberValue: parseInt(configVariable.value),
booleanValue: configVariable.value,
},
Expand All @@ -56,12 +58,16 @@ const Body = ({
</Text>
{configVariable.type == "string" &&
(configVariable.obscured ? (
<PasswordInput label="Value" {...form.getInputProps("stringValue")} />
<PasswordInput {...form.getInputProps("stringValue")} />
) : (
<TextInput label="Value" {...form.getInputProps("stringValue")} />
<TextInput {...form.getInputProps("stringValue")} />
))}

{configVariable.type == "text" && (
<Textarea autosize {...form.getInputProps("textValue")} />
)}
{configVariable.type == "number" && (
<NumberInput label="Value" {...form.getInputProps("numberValue")} />
<NumberInput {...form.getInputProps("numberValue")} />
)}
{configVariable.type == "boolean" && (
<Select
Expand All @@ -78,6 +84,8 @@ const Body = ({
const value =
configVariable.type == "string"
? form.values.stringValue
: configVariable.type == "text"
? form.values.textValue
: configVariable.type == "number"
? form.values.numberValue
: form.values.booleanValue == "true";
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/services/config.service.ts
Expand Up @@ -27,7 +27,7 @@ const get = (key: string, configVariables: Config[]): any => {

if (configVariable.type == "number") return parseInt(configVariable.value);
if (configVariable.type == "boolean") return configVariable.value == "true";
if (configVariable.type == "string") return configVariable.value;
if (configVariable.type == "string" || configVariable.type == "text") return configVariable.value;
};

const finishSetup = async (): Promise<AdminConfig[]> => {
Expand Down

0 comments on commit 0616a68

Please sign in to comment.