[34588f42] Feat: Versandzeit-Steuerung für Freigabe-Anfragen hinzugefügt
- Backend unterstützt nun zeitgesteuerten Versand (scheduled_time) via BackgroundTasks. - Frontend um ein Zeitauswahl-Feld erweitert.
This commit is contained in:
@@ -61,6 +61,7 @@ function App() {
|
||||
const [uploadMessage, setUploadMessage] = useState("");
|
||||
const [isSendingRelease, setIsSendingRelease] = useState(false);
|
||||
const [releaseMessage, setReleaseMessage] = useState("");
|
||||
const [scheduledTime, setScheduledTime] = useState(""); // New state
|
||||
|
||||
const fetchReleaseStats = async () => {
|
||||
try {
|
||||
@@ -136,10 +137,13 @@ function App() {
|
||||
setReleaseMessage(`Sende ${emailsToSend.length} Mails...`);
|
||||
|
||||
try {
|
||||
const response = await fetch(`${API_BASE_URL}/api/gmail/send-bulk`, {
|
||||
const response = await fetch(`${API_BASE_URL}/api/publish-request/send`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ emails: emailsToSend })
|
||||
body: JSON.stringify({
|
||||
emails: emailsToSend,
|
||||
scheduled_time: scheduledTime || null
|
||||
})
|
||||
});
|
||||
const data = await response.json();
|
||||
if (response.ok) {
|
||||
@@ -553,10 +557,13 @@ function App() {
|
||||
});
|
||||
|
||||
try {
|
||||
const response = await fetch(`${API_BASE_URL}/api/gmail/send-bulk`, {
|
||||
const response = await fetch(`${API_BASE_URL}/api/publish-request/send`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ emails: emailsToSend })
|
||||
body: JSON.stringify({
|
||||
emails: emailsToSend,
|
||||
scheduled_time: scheduledTime || null
|
||||
})
|
||||
});
|
||||
|
||||
if (response.ok) {
|
||||
@@ -1021,6 +1028,17 @@ function App() {
|
||||
onChange={(e) => setReleaseEmails(e.target.value)}
|
||||
className="w-full px-3 py-2 text-sm border border-gray-200 rounded-lg focus:ring-2 focus:ring-indigo-500 mb-2 h-20"
|
||||
/>
|
||||
|
||||
<div className="flex items-center gap-2 mb-3 bg-white p-2 rounded-lg border border-gray-100">
|
||||
<span className="text-[10px] font-bold text-gray-400 uppercase">Versandzeit (Optional)</span>
|
||||
<input
|
||||
type="time"
|
||||
value={scheduledTime}
|
||||
onChange={(e) => setScheduledTime(e.target.value)}
|
||||
className="text-xs border border-gray-200 rounded px-2 py-1 focus:ring-1 focus:ring-indigo-500"
|
||||
/>
|
||||
<span className="text-[10px] text-gray-400 italic">Leer = sofort</span>
|
||||
</div>
|
||||
<button
|
||||
onClick={handleSendRelease}
|
||||
disabled={isSendingRelease || !releaseEmails.trim() || !reminderResult || !isGmailAuthenticated}
|
||||
|
||||
Reference in New Issue
Block a user