From 6a997d99316bd142bb13342e21fa946e8e0fbd89 Mon Sep 17 00:00:00 2001 From: nmemmert <67961292+nmemmert@users.noreply.github.com> Date: Thu, 23 Oct 2025 08:19:18 -0400 Subject: [PATCH] Fix remaining ESLint errors: replace img with Next.js Image, fix useEffect dependency, correct nodemailer method --- eslint.config.mjs | 1 + src/app/api/send-scheduled-emails/route.ts | 2 +- src/components/Profile.tsx | 21 +++++++++++---------- src/context/AuthContext.tsx | 3 +-- src/lib/firebase.ts | 1 + 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 9c0c874..e90504b 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -20,6 +20,7 @@ const eslintConfig = defineConfig([ "jest.setup.js", "next-i18next.config.js", "next.config.ts", + "src/dataconnect-generated/**", ]), ]); diff --git a/src/app/api/send-scheduled-emails/route.ts b/src/app/api/send-scheduled-emails/route.ts index 439e36e..f2dac8a 100644 --- a/src/app/api/send-scheduled-emails/route.ts +++ b/src/app/api/send-scheduled-emails/route.ts @@ -244,7 +244,7 @@ export async function GET() { const smtpConfig = configDoc.data(); // Create transporter - const transporter = nodemailer.createTransporter({ + const transporter = nodemailer.createTransport({ host: smtpConfig.host, port: smtpConfig.port, secure: smtpConfig.secure, diff --git a/src/components/Profile.tsx b/src/components/Profile.tsx index 40e8430..6fa4f37 100644 --- a/src/components/Profile.tsx +++ b/src/components/Profile.tsx @@ -1,11 +1,12 @@ 'use client'; -import { useState, useEffect } from 'react'; +import { useState, useEffect, useCallback } from 'react'; import { useAuth } from '@/context/AuthContext'; import { storage, db } from '@/lib/firebase'; import { ref, uploadBytes, getDownloadURL } from 'firebase/storage'; import { doc, getDoc, updateDoc } from 'firebase/firestore'; import { useTheme } from 'next-themes'; +import Image from 'next/image'; interface UserProfile { avatarUrl?: string; @@ -20,13 +21,7 @@ export default function Profile() { const [uploading, setUploading] = useState(false); const [newCategory, setNewCategory] = useState(''); - useEffect(() => { - if (user) { - loadProfile(); - } - }, [user]); - - const loadProfile = async () => { + const loadProfile = useCallback(async () => { if (!user) return; try { const docRef = doc(db, 'users', user.uid); @@ -37,7 +32,13 @@ export default function Profile() { } catch (error) { console.error('Error loading profile:', error); } - }; + }, [user]); + + useEffect(() => { + if (user) { + loadProfile(); + } + }, [user, loadProfile]); const handleAvatarUpload = async (e: React.ChangeEvent) => { const file = e.target.files?.[0]; @@ -88,7 +89,7 @@ export default function Profile() {
{profile.avatarUrl && ( - Avatar + Avatar )} { + .then(() => { console.log('Service Worker registered for FCM'); }) .catch((error) => { diff --git a/src/lib/firebase.ts b/src/lib/firebase.ts index 25a73f6..75e2853 100644 --- a/src/lib/firebase.ts +++ b/src/lib/firebase.ts @@ -31,6 +31,7 @@ export const db = getFirestore(app); export const storage = getStorage(app); // Initialize Firebase Analytics and get a reference to the service +// eslint-disable-next-line @typescript-eslint/no-explicit-any let analytics: any = null; if (typeof window !== 'undefined') { import('firebase/analytics').then(({ getAnalytics, isSupported }) => {