diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-13 22:04:15 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-13 22:04:15 +0200 |
| commit | c825167f910d103031370bfa3893203bdc792fed (patch) | |
| tree | 327e827515038d644ee726133560e92170a42907 /js/app.js | |
| parent | 7196311bb30a08d6c9ef46506fc3e121d8c3c00d (diff) | |
Refactor app initialization flowmain
Diffstat (limited to 'js/app.js')
| -rw-r--r-- | js/app.js | 36 |
1 files changed, 26 insertions, 10 deletions
@@ -28,9 +28,22 @@ const elements = { // Initialize the application async function init() { cacheElements(); - await loadBooks(); + setupUI(); + await initializeBooks(); +} + +function setupUI() { setupFilters(); setupModal(); +} + +async function initializeBooks() { + const books = await loadBooks(); + if (!books) return; + + state.books = books; + state.filteredBooks = [...books]; + populateAuthorFilter(); renderBooks(); } @@ -51,19 +64,22 @@ async function loadBooks() { const response = await fetch('data/books.json'); if (!response.ok) throw new Error('Failed to load books'); const data = await response.json(); - state.books = sortBooksByYear(data.books); - state.filteredBooks = [...state.books]; - populateAuthorFilter(); + return sortBooksByYear(data.books); } catch (error) { - console.error('Error loading books:', error); - elements.booksGrid.innerHTML = ` - <div class="error-message"> - <p>Failed to load books. Please try refreshing the page.</p> - </div> - `; + renderLoadError(error); + return null; } } +function renderLoadError(error) { + console.error('Error loading books:', error); + elements.booksGrid.innerHTML = ` + <div class="error-message"> + <p>Failed to load books. Please try refreshing the page.</p> + </div> + `; +} + function sortBooksByYear(books) { return [...books].sort((a, b) => { if (a.year !== b.year) return a.year - b.year; |
