feat: extend PWA offline support to all recipe routes and glaube pages
- Add offline support for category, tag, icon list pages - Add offline support for favorites page (stores locally for offline) - Add offline support for season list page - Cache root page and glaube pages for offline access - Dynamically discover glaube routes at build time using Vite glob - Add db functions for getAllCategories, getAllTags, getAllIcons - Pre-cache __data.json for all category, tag, icon, season subroutes - Update service worker to cache glaube and root page responses
This commit is contained in:
@@ -70,9 +70,12 @@ sw.addEventListener('fetch', (event) => {
|
||||
// Skip API requests - let them go to network (IndexedDB handles offline)
|
||||
if (url.pathname.startsWith('/api/')) return;
|
||||
|
||||
// Handle SvelteKit __data.json requests for recipe routes
|
||||
// Handle SvelteKit __data.json requests for cacheable routes (recipes, glaube, root)
|
||||
// Cache successful responses, serve from cache when offline
|
||||
if (url.pathname.includes('__data.json') && url.pathname.match(/^\/(rezepte|recipes)/)) {
|
||||
const isCacheableDataRoute = url.pathname.includes('__data.json') &&
|
||||
(url.pathname.match(/^\/(rezepte|recipes|glaube)(\/|$)/) || url.pathname === '/__data.json');
|
||||
|
||||
if (isCacheableDataRoute) {
|
||||
event.respondWith(
|
||||
(async () => {
|
||||
const cache = await caches.open(CACHE_PAGES);
|
||||
@@ -168,8 +171,12 @@ sw.addEventListener('fetch', (event) => {
|
||||
// Try network first
|
||||
const response = await fetch(event.request);
|
||||
|
||||
// Cache successful HTML responses for recipe pages (using pathname as key)
|
||||
if (response.ok && url.pathname.match(/^\/(rezepte|recipes)(\/|$)/)) {
|
||||
// Cache successful HTML responses for cacheable pages (using pathname as key)
|
||||
const isCacheablePage = response.ok && (
|
||||
url.pathname.match(/^\/(rezepte|recipes|glaube)(\/|$)/) ||
|
||||
url.pathname === '/'
|
||||
);
|
||||
if (isCacheablePage) {
|
||||
cache.put(cacheKey, response.clone());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user