feat: add configurable sender name and allow users to choose between system and personal SMTP accounts when sending emails
Build and Push Multi-Platform Images / build-and-push (push) Successful in 34s
Build and Push Multi-Platform Images / build-and-push (push) Successful in 34s
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { useCallback, useEffect, useMemo, useRef, useState, type ReactNode } from 'react';
|
||||
import { useNavigate, useParams } from 'react-router-dom';
|
||||
import { Button, Dropdown, Empty, Form, Input, Modal, Popconfirm, Space, Spin, Steps, Tag, Tooltip, Typography, message } from 'antd';
|
||||
import { Button, Dropdown, Empty, Form, Input, Modal, Popconfirm, Select, Space, Spin, Steps, Tag, Tooltip, Typography, message } from 'antd';
|
||||
import type { MenuProps } from 'antd';
|
||||
import {
|
||||
ArrowLeftOutlined,
|
||||
@@ -26,7 +26,7 @@ import StarterKit from '@tiptap/starter-kit';
|
||||
import Underline from '@tiptap/extension-underline';
|
||||
import { inboxApi, type InboxBarcode, type InboxFile, type PostprocessActionResult } from '../api/inbox';
|
||||
import { paperlessApi } from '../api/paperless';
|
||||
import { userSettingsApi } from '../api/userSettings';
|
||||
import { userSettingsApi, type SenderOption } from '../api/userSettings';
|
||||
|
||||
const ZOOM_MIN = 0.5;
|
||||
const ZOOM_MAX = 3;
|
||||
@@ -670,6 +670,8 @@ function SendEmailDialog({ open, fileId, fileName, documents, onClose }: SendEma
|
||||
const [form] = Form.useForm();
|
||||
const [submitting, setSubmitting] = useState(false);
|
||||
const [filenames, setFilenames] = useState<string[]>([]);
|
||||
const [senders, setSenders] = useState<SenderOption[]>([]);
|
||||
const [selectedSender, setSelectedSender] = useState<string>('default');
|
||||
|
||||
const editor = useEditor({
|
||||
extensions: [StarterKit, Underline],
|
||||
@@ -690,6 +692,10 @@ function SendEmailDialog({ open, fileId, fileName, documents, onClose }: SendEma
|
||||
}).catch(() => {
|
||||
editor?.commands.clearContent();
|
||||
});
|
||||
userSettingsApi.getSenders().then((s) => {
|
||||
setSenders(s);
|
||||
setSelectedSender(s.length > 1 ? 'user' : 'default');
|
||||
}).catch(() => setSenders([]));
|
||||
}, [open, documents, fileName, form, editor]);
|
||||
|
||||
const handleOk = async () => {
|
||||
@@ -705,6 +711,7 @@ function SendEmailDialog({ open, fileId, fileName, documents, onClose }: SendEma
|
||||
pages: doc.pages,
|
||||
filename: filenames[i] || fileName,
|
||||
})),
|
||||
sender: senders.length > 1 ? selectedSender : undefined,
|
||||
});
|
||||
message.success('E-Mail wurde gesendet');
|
||||
onClose();
|
||||
@@ -729,6 +736,15 @@ function SendEmailDialog({ open, fileId, fileName, documents, onClose }: SendEma
|
||||
width={580}
|
||||
>
|
||||
<Form form={form} layout="vertical" style={{ marginTop: 16 }}>
|
||||
{senders.length > 1 && (
|
||||
<Form.Item label="Absender">
|
||||
<Select
|
||||
value={selectedSender}
|
||||
onChange={setSelectedSender}
|
||||
options={senders.map((s) => ({ value: s.id, label: s.label }))}
|
||||
/>
|
||||
</Form.Item>
|
||||
)}
|
||||
<Form.Item name="to" label="Empfänger" rules={[{ required: true, message: 'Bitte Empfänger angeben' }, { type: 'email', message: 'Ungültige E-Mail-Adresse' }]}>
|
||||
<Input placeholder="empfaenger@beispiel.de" />
|
||||
</Form.Item>
|
||||
|
||||
Reference in New Issue
Block a user