diff --git a/client/src/Hooks/useSendTestEmail.js b/client/src/Hooks/useSendTestEmail.js index fef45c3ea..55d5da4c3 100644 --- a/client/src/Hooks/useSendTestEmail.js +++ b/client/src/Hooks/useSendTestEmail.js @@ -2,27 +2,44 @@ import { useState } from "react"; import { networkService } from "../main"; import { useSelector } from "react-redux"; import { createToast } from "../Utils/toastUtils"; +import { useTranslation } from "react-i18next"; const useSendTestEmail = () => { const [isSending, setIsSending] = useState(false); const [error, setError] = useState(null); const user = useSelector((state) => state.auth.user); + const { t } = useTranslation(); - const sendTestEmail = async () => { + /** + * Send a test email with optional email configuration + * @param {Object} emailConfig - Optional email configuration parameters + */ + const sendTestEmail = async (emailConfig = null) => { try { setIsSending(true); setError(null); - const response = await networkService.sendTestEmail({ to: user.email }); + // Send the test email with or without configuration + const response = await networkService.sendTestEmail({ + to: user.email, + emailConfig + }); + if (typeof response?.data?.data?.messageId !== "undefined") { createToast({ - body: "Test email sent successfully", + body: t("settingsTestEmailSuccess", "Test email sent successfully"), }); } else { - throw new Error("Failed to send test email"); + throw new Error(response?.data?.error || t("settingsTestEmailFailed", "Failed to send test email")); } } catch (error) { setError(error); + createToast({ + body: t("settingsTestEmailFailedWithReason", "Failed to send test email: {{reason}}", { + reason: error.message || t("settingsTestEmailUnknownError", "Unknown error") + }), + variant: "error" + }); } finally { setIsSending(false); } diff --git a/client/src/locales/gb.json b/client/src/locales/gb.json index e15968a80..9fb5ac2bb 100644 --- a/client/src/locales/gb.json +++ b/client/src/locales/gb.json @@ -112,15 +112,21 @@ "settingsFailedToAddDemoMonitors": "Failed to add demo monitors", "settingsMonitorsDeleted": "Successfully deleted all monitors", "settingsFailedToDeleteMonitors": "Failed to delete all monitors", - "settingsEmail": "Email settings", - "settingsEmailDescription": "Configure email settings", - "settingsEmailHost": "Email host - Hostname or IP address of the SMTP server", - "settingsEmailPort": "Email port - Port to connect to", - "settingsEmailAddress": "Email address - Used for authentication", - "settingsEmailPassword": "Email password - Password for authentication", - "settingsEmailUser": "Email user - Username for authentication, overrides email address if specified", + "settingsEmail": "Email", + "settingsEmailDescription": "Configure the email settings for your system. This is used to send notifications and alerts.", + "settingsEmailHost": "Email host", + "settingsEmailPort": "Email port", + "settingsEmailUser": "Email user", + "settingsEmailAddress": "Email address", + "settingsEmailPassword": "Email password", + "settingsEmailConnectionHost": "Email connection host", + "settingsTestEmail": "Send test e-mail", + "settingsTestEmailSuccess": "Test email sent successfully", + "settingsTestEmailFailed": "Failed to send test email", + "settingsTestEmailFailedWithReason": "Failed to send test email: {{reason}}", + "settingsTestEmailUnknownError": "Unknown error", + "settingsEmailRequiredFields": "Email host and port are required", "settingsEmailFieldResetLabel": "Password is set. Click Reset to change it.", - "settingsEmailConnectionHost": "Email connection host - Hostname to use in the HELO/EHLO greeting", "backendUnreachable": "Server Connection Error", "backendUnreachableMessage": "We're unable to connect to the server. Please check your internet connection or verify your deployment configuration if the problem persists.", "backendUnreachableError": "Cannot connect to the server. Please try again later.", @@ -522,8 +528,6 @@ "logOut": "Log out" }, "navControls": "Controls", - "statusBreadCrumbsStatusPages": "Status Pages", - "statusBreadCrumbsDetails": "Details", "incidentsPageTitle": "Incidents", "passwordPanel": { "passwordChangedSuccess": "Your password was changed successfully.", diff --git a/client/src/locales/ru.json b/client/src/locales/ru.json index df1e5a5a7..cff51d4de 100644 --- a/client/src/locales/ru.json +++ b/client/src/locales/ru.json @@ -115,6 +115,21 @@ "settingsRemoveAllMonitorsDialogConfirm": "Да, удалить все мониторы", "settingsWallet": "Кошелёк", "settingsWalletDescription": "Подключите свой кошелек здесь. Это необходимо для того, чтобы монитор Distributed Uptime мог подключиться к нескольким узлам по всему миру.", + "settingsEmail": "Настройки электронной почты", + "settingsEmailDescription": "Настройте параметры электронной почты", + "settingsEmailHost": "Хост электронной почты - имя хоста или IP-адрес SMTP-сервера", + "settingsEmailPort": "Порт электронной почты - порт для подключения", + "settingsEmailAddress": "Адрес электронной почты - используется для аутентификации", + "settingsEmailPassword": "Пароль электронной почты - пароль для аутентификации", + "settingsEmailUser": "Пользователь электронной почты - имя пользователя для аутентификации, переопределяет адрес электронной почты, если указан", + "settingsEmailFieldResetLabel": "Пароль установлен. Нажмите «Сбросить», чтобы изменить его.", + "settingsEmailConnectionHost": "Хост подключения электронной почты - имя хоста, используемое в приветствии HELO/EHLO", + "settingsTestEmail": "Отправить тестовое письмо", + "settingsTestEmailSuccess": "Тестовое письмо успешно отправлено", + "settingsTestEmailFailed": "Не удалось отправить тестовое письмо", + "settingsTestEmailFailedWithReason": "Не удалось отправить тестовое письмо: {{reason}}", + "settingsTestEmailUnknownError": "Неизвестная ошибка", + "settingsEmailRequiredFields": "Требуются хост и порт электронной почты", "settingsAbout": "О", "settingsDevelopedBy": "Developed by Bluewave Labs.", "settingsSave": "Сохранить", diff --git a/client/src/locales/tr.json b/client/src/locales/tr.json index 5aee7cf51..3aacbdf4c 100644 --- a/client/src/locales/tr.json +++ b/client/src/locales/tr.json @@ -99,6 +99,12 @@ "settingsRemoveAllMonitorsDialogConfirm": "Evet, tüm monitörleri kaldır", "settingsWallet": "Cüzdan", "settingsWalletDescription": "Cüzdanınızı buradan bağlayın. Bu, Dağıtılmış Çalışma Süresi monitörünün küresel olarak birden çok düğüme bağlanması için gereklidir.", + "settingsTestEmail": "Test e-postası gönder", + "settingsTestEmailSuccess": "Test e-postası başarıyla gönderildi", + "settingsTestEmailFailed": "Test e-postası gönderilemedi", + "settingsTestEmailFailedWithReason": "Test e-postası gönderilemedi: {{reason}}", + "settingsTestEmailUnknownError": "Bilinmeyen hata", + "settingsEmailRequiredFields": "E-posta sunucusu ve port gereklidir", "settingsAbout": "Hakkında", "settingsDevelopedBy": "Bluewave Labs tarafından geliştirilmiştir.", "settingsSave": "Kaydet",