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, }); const data = response.data.data || {}; setSettings({ gmail_user: data.gmail_user || '', gmail_app_password: data.gmail_app_password || '', telegram_bot_token: data.telegram_bot_token || '', telegram_chat_id: data.telegram_chat_id || '', }); } catch (error) { console.error('Failed to load settings:', error); } finally { setLoading(false); } }; const handleSave = async () => { try { await Promise.all([ axios.put(`${API_URL}/api/settings/gmail`, { gmail_user: settings.gmail_user, gmail_app_password: settings.gmail_app_password, }, { withCredentials: true }), axios.put(`${API_URL}/api/settings/telegram`, { telegram_bot_token: settings.telegram_bot_token, telegram_chat_id: settings.telegram_chat_id, }, { 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-gmail`, {}, { 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} )} 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} )} 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;