Questa implementazione gestisce il caso in cui un utente cerca un codice EAN non presente nel database di PetScan, fornendo un'esperienza utente fluida e coinvolgente.
- Scopo: Primo modal che appare quando un prodotto non viene trovato
- Caratteristiche:
- Titolo: "Prodotto non trovato"
- Messaggio: "Il prodotto cercato non è presente nel nostro database. Aiutaci a migliorare PetScan."
- Due pulsanti:
- 🟢 "Effettua un'altra ricerca" → chiude il modal e riporta alla home con focus sulla barra di ricerca
- 🟠 "Inserisci il prodotto mancante" → apre il secondo modal
- Scopo: Secondo modal per l'inserimento di un prodotto mancante
- Caratteristiche:
- Form con validazione
- Codice EAN precompilato (non modificabile)
- Campo obbligatorio: "Nome del brand"
- Campo obbligatorio: "Nome del prodotto"
- Campo opzionale: "Email" (con placeholder informativo)
- Pulsante "Invia richiesta" che invia automaticamente una mail
- Scopo: Gestisce l'invio delle richieste di prodotto mancante
- Caratteristiche:
- Utilizza EmailJS per l'invio email
- Limite giornaliero di 500 richieste per utente
- Tracking delle richieste nel localStorage
- Email inviata a
alessandro.miu@gmail.com - Oggetto: "Richiesta Aggiunta PetScan"
- Configurazione centralizzata in
src/config/emailjs.ts
- Nuovi stati aggiunti:
showProductNotFoundModal: controlla la visibilità del primo modalshowAddProductModal: controlla la visibilità del secondo modallastSearchedEan: memorizza l'ultimo codice EAN cercato
- Nuove funzioni:
handleNewSearch(): resetta completamente lo stato e riporta alla home page con focus sulla barra di ricercahandleAddProduct(): apre il modal di inserimento prodottohandleCloseAddProductModal(): resetta completamente lo stato e riporta alla home page con focus sulla barra di ricerca
- Modifiche:
- Rimossa la sezione "Nessun prodotto trovato"
- Aggiunti i nuovi modali
- Integrazione con il hook aggiornato
- Correzione importante: Aggiunte funzioni wrapper per resettare anche lo stato
isLoadinglocale del componente
- Modifiche:
- Rimossa la sezione "Nessun prodotto trovato"
- Aggiunti i nuovi modali
- Integrazione con il nuovo comportamento
- Reset del campo di ricerca: Aggiunto resetTrigger per pulire il campo del BarcodeScanner
- Modifiche:
- Aggiunta prop
resetTriggerper resettare il campo di input manuale - useEffect per pulire automaticamente il campo quando cambia il trigger
- Aggiunta prop
- Ricerca Prodotto: L'utente cerca un codice EAN non presente nel database
- Spinner di Caricamento: Viene mostrato durante la ricerca
- Primo Modal: Appare "Prodotto non trovato" con due opzioni
- Opzione 1 - Nuova Ricerca: Resetta completamente lo stato e riporta alla home page pulita con focus sulla barra di ricerca
- Opzione 2 - Inserisci Prodotto: Apre il secondo modal con il form
- Form di Inserimento: L'utente compila i campi richiesti
- Invio Richiesta: Viene inviata automaticamente una mail all'amministratore
- Conferma: Messaggio di successo e chiusura automatica del modal con reset completo dello stato
- Reset campo ricerca: Il campo di ricerca viene pulito automaticamente
L'email contiene:
Oggetto: Richiesta Aggiunta PetScan
NUOVA RICHIESTA DI AGGIUNTA PRODOTTO PETSCAN
=== INFORMAZIONI PRODOTTO ===
EAN: [codice ean]
Brand: [nome brand]
Nome prodotto: [nome prodotto]
=== CONTATTO ===
Email del richiedente: [email se fornita]
=== LIMITE RICHIESTE ===
Richieste rimanenti oggi: [numero]
---
Richiesta inviata automaticamente da PetScan
Data: [data e ora]
- Limite giornaliero: 500 richieste per utente (resettato ogni giorno)
- Validazione: Campi obbligatori e validazione email
- Tracking: Le richieste sono tracciate nel localStorage per evitare abusi
- Email: Utilizzo di FormSubmit per l'invio sicuro delle email
- React: Per i componenti modali
- TypeScript: Per il type safety
- EmailJS: Per l'invio delle email
- localStorage: Per il tracking delle richieste
- Tailwind CSS: Per lo styling coerente con PetScan
Per testare l'implementazione:
- Cerca un codice EAN non presente nel database (es. "1234567890123")
- Verifica che appaia il primo modal
- Testa "Effettua un'altra ricerca": verifica che la scheda "Analizzando il prodotto..." scompaia completamente
- Testa l'opzione "Inserisci prodotto mancante"
- Verifica che il form funzioni correttamente
- Controlla che l'email venga inviata all'amministratore
- Verifica che dopo l'invio del form la pagina torni pulita alla home
- Verifica che il campo di ricerca sia pulito dopo la chiusura dei modali
- Il limite giornaliero può essere modificato in
src/utils/productRequestService.ts - L'indirizzo email può essere cambiato nel file
src/utils/productRequestService.ts - I testi dei modali possono essere personalizzati nei rispettivi componenti
- La configurazione EmailJS può essere modificata in
src/config/emailjs.ts
Per configurare EmailJS, segui le istruzioni nel file EMAILJS_SETUP.md.