fix: resolve smtp authentication error and notification issues
All checks were successful
Build and Deploy / build-and-push (push) Successful in 2m12s

- Stripped literal quotes from SMTP credentials in nodemailer config to prevent '535 Incorrect auth data' in Docker Swarm.

- Reduced notification polling interval from 60s to 10s for real-time updates.

- Fixed browser autoplay block for audio notifications by properly initializing the audio context.
This commit is contained in:
Cauê Faleiros
2026-03-10 14:37:24 -03:00
parent d3587344a3
commit ab35cf9126
2 changed files with 18 additions and 6 deletions

View File

@@ -19,8 +19,8 @@ const transporter = nodemailer.createTransport({
port: parseInt(process.env.SMTP_PORT) || 587, port: parseInt(process.env.SMTP_PORT) || 587,
secure: false, // false para 587 (STARTTLS) secure: false, // false para 587 (STARTTLS)
auth: { auth: {
user: process.env.SMTP_USER || 'nao-responda@blyzer.com.br', user: (process.env.SMTP_USER || 'nao-responda@blyzer.com.br').replace(/^"|"$/g, ''),
pass: process.env.SMTP_PASS || 'Compor@2017#', // Fallback to your known prod pass if env fails in swarm pass: (process.env.SMTP_PASS || 'Compor@2017#').replace(/^"|"$/g, ''),
}, },
tls: { tls: {
ciphers: 'SSLv3', ciphers: 'SSLv3',

View File

@@ -47,11 +47,23 @@ export const Layout: React.FC<{ children: React.ReactNode }> = ({ children }) =>
const previousUnreadCountRef = React.useRef(0); const previousUnreadCountRef = React.useRef(0);
const isInitialLoadRef = React.useRef(true); const isInitialLoadRef = React.useRef(true);
// Pre-initialize audio to ensure it's loaded and ready
const audioRef = React.useRef<HTMLAudioElement | null>(null);
useEffect(() => {
// Determine base path correctly whether in prod or dev
const basePath = import.meta.env.PROD ? '' : 'http://localhost:3001';
audioRef.current = new Audio(`${basePath}/audio/notification.mp3`);
audioRef.current.volume = 0.5;
}, []);
const playNotificationSound = () => { const playNotificationSound = () => {
if (currentUser?.sound_enabled !== false) { if (currentUser?.sound_enabled !== false && audioRef.current) {
const audio = new Audio('/audio/notification.mp3'); // Reset time to 0 to allow rapid replays
audio.volume = 0.5; audioRef.current.currentTime = 0;
audio.play().catch(e => console.log('Audio play failed:', e)); const playPromise = audioRef.current.play();
if (playPromise !== undefined) {
playPromise.catch(e => console.log('Audio play blocked by browser policy:', e));
}
} }
}; };