searchBooks method
Esegue la ricerca di libri tramite l'API di Google Books. Utilizza il testo inserito dall'utente come query (ISBN o titolo). Aggiorna lo stato di caricamento e i risultati della ricerca.
Lancia un'eccezione se si verifica un errore o se non vengono trovati libri.
@return Future<void> completato al termine della ricerca.
Implementation
Future<void> searchBooks() async {
final String query = searchQueryController.text.trim();
if (query.isEmpty) {
_searchResults = [];
return;
}
_isLoading = true;
_searchResults = [];
// Provo ad effettuare la ricerca tramite l'API
try {
// Se il testo inserito dall'utente non é un isbn
if (isbnValidator.notIsbn(query, strict: false)) {
debugPrint('DEBUG: Ricerca per titolo: $query');
_searchResults = await _apiService.searchBooks(query: query);
} else {
// Se il testo inserito dall'utente é un isbn, lo pulisco e lo uso per la ricerca
String cleanQuery = isbnValidator.toCanonical(query);
debugPrint('DEBUG: Ricerca per ISBN: $cleanQuery');
_searchResults = await _apiService.searchBooks(isbn: cleanQuery);
}
if (_searchResults.isEmpty) {
throw Exception('Nessun libro trovato per la tua ricerca.');
}
} catch (e) {
debugPrint('Errore durante la ricerca su Google Books: $e');
_searchResults = [];
// Rilancio l'eccezione per gestirla a livello di UI
throw Exception('Errore durante la ricerca:');
} finally {
_isLoading = false;
}
}