mirror of
https://github.com/bluewave-labs/Checkmate.git
synced 2026-01-16 22:59:44 -06:00
feat: Enhance useSendTestEmail hook to support testing without saving
- Add support for optional email configuration parameter - Implement improved error handling with detailed messages - Add internationalization support for all user feedback - Return appropriate error information for better UX - Maintain backward compatibility with existing code
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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.",
|
||||
|
||||
@@ -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": "Сохранить",
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user