import { useState, useEffect } from 'react';
import {
Box,
Paper,
Typography,
TextField,
Button,
Grid,
Alert,
CircularProgress,
Divider,
} from '@mui/material';
import { Save, Send } from '@mui/icons-material';
import axios from 'axios';
const API_URL = import.meta.env.VITE_API_URL;
function Settings() {
const [settings, setSettings] = useState({
gmail_user: '',
gmail_app_password: '',
telegram_bot_token: '',
telegram_chat_id: '',
});
const [loading, setLoading] = useState(true);
const [testLoading, setTestLoading] = useState({ mail: false, telegram: false });
const [alerts, setAlerts] = useState({ mail: null, telegram: null });
useEffect(() => {
loadSettings();
}, []);
const loadSettings = async () => {
try {
const response = await axios.get(`${API_URL}/api/settings`, {
withCredentials: true,
});
setSettings(response.data.data);
} catch (error) {
console.error('Failed to load settings:', error);
} finally {
setLoading(false);
}
};
const handleSave = async () => {
try {
await axios.put(`${API_URL}/api/settings`, settings, {
withCredentials: true,
});
alert('Ayarlar kaydedildi!');
} catch (error) {
console.error('Failed to save settings:', error);
alert('Ayarlar kaydedilemedi');
}
};
const handleTestMail = async () => {
setTestLoading({ ...testLoading, mail: true });
try {
const response = await axios.post(
`${API_URL}/api/settings/test-mail`,
{},
{ withCredentials: true }
);
setAlerts({ ...alerts, mail: { severity: 'success', message: response.data.message } });
} catch (error) {
setAlerts({
...alerts,
mail: { severity: 'error', message: error.response?.data?.error || 'Test başarısız' },
});
} finally {
setTestLoading({ ...testLoading, mail: false });
}
};
const handleTestTelegram = async () => {
setTestLoading({ ...testLoading, telegram: true });
try {
const response = await axios.post(
`${API_URL}/api/settings/test-telegram`,
{},
{ withCredentials: true }
);
setAlerts({ ...alerts, telegram: { severity: 'success', message: response.data.message } });
} catch (error) {
setAlerts({
...alerts,
telegram: {
severity: 'error',
message: error.response?.data?.error || 'Test başarısız',
},
});
} finally {
setTestLoading({ ...testLoading, telegram: false });
}
};
if (loading) {
return (
);
}
return (
Sistem Ayarları
Gmail Ayarları
Gmail App Password kullanın (2FA aktif olmalı)
setSettings({ ...settings, gmail_user: e.target.value })
}
/>
setSettings({ ...settings, gmail_app_password: e.target.value })
}
/>
{alerts.mail && (
{alerts.mail.message}
)}
}
onClick={handleSave}
>
Kaydet
}
onClick={handleTestMail}
disabled={testLoading.mail}
>
Test Mail Gönder
Telegram Ayarları
@BotFather'dan bot token alın, @userinfobot'dan chat ID öğrenin
setSettings({ ...settings, telegram_bot_token: e.target.value })
}
/>
setSettings({ ...settings, telegram_chat_id: e.target.value })
}
/>
{alerts.telegram && (
{alerts.telegram.message}
)}
}
onClick={handleSave}
>
Kaydet
}
onClick={handleTestTelegram}
disabled={testLoading.telegram}
>
Test Bildirimi
Tracking URL Bilgisi
Tracking URL formatı: http://your-domain.com/t/TOKEN
Bu URL'ler mail şablonlarında otomatik olarak oluşturulur ve gönderilir.
);
}
export default Settings;