diff options
| author | Pierre Paridans <app@odoo.com> | 2020-09-24 12:52:39 +0000 |
|---|---|---|
| committer | Pierre Paridans <app@odoo.com> | 2020-10-02 12:21:39 +0000 |
| commit | 47fdfb8ae73ab79100fb83751ff0f132b4a5c628 (patch) | |
| tree | 67c5a764747f223c20ebadad4e514cb1b293e802 /addons/website_event_track/static | |
| parent | ef2d323c3a029cb58ee219f06a9809aa52d108b3 (diff) | |
[FIX] website_event_track: reuse fetch logic for prefetching urls
Before this commit, when prefetching urls if one of them fails, the
following are dropped.
This commit fixes it by handling each url seperately instead of sending
all of them to `cache.addAll()`. It also reuse the same logic as the
regular FetchEvent for consistency.
Co-authored-by: Olivier Dony <odo@odoo.com>
Diffstat (limited to 'addons/website_event_track/static')
| -rw-r--r-- | addons/website_event_track/static/src/js/service_worker.js | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/addons/website_event_track/static/src/js/service_worker.js b/addons/website_event_track/static/src/js/service_worker.js index 4b8772de3c3..c6b6800aacf 100644 --- a/addons/website_event_track/static/src/js/service_worker.js +++ b/addons/website_event_track/static/src/js/service_worker.js @@ -225,7 +225,7 @@ const matchCache = async (request) => { * @param {FetchEvent} param0 * @returns {Promise<Response>} */ -const processFetchEvent = async ({ request }) => { +const processFetchRequest = async ({ request }) => { const requestCopy = request.clone(); let response; try { @@ -288,11 +288,17 @@ const processPendingRequests = async () => { */ const prefetchUrls = async (urls = []) => { const cache = await caches.open(cacheName); - let urlsToCache = new Set(urls); - for (let url of urlsToCache) { - (await cache.match(url)) ? urlsToCache.delete(url) : undefined; + const uniqUrls = new Set(urls); + for (let url of uniqUrls) { + if (await cache.match(url)) { + continue; + } + try { + await processFetchRequest({ request: new Request(url) }); + } catch (error) { + console.error(`fail to prefetch ${url} : ${error}`); + } } - return cache.addAll([...urlsToCache]); }; /** @@ -327,7 +333,7 @@ const processMessage = (data) => { }; self.addEventListener("fetch", (event) => { - event.respondWith(processFetchEvent(event)); + event.respondWith(processFetchRequest(event)); }); self.addEventListener("sync", (event) => { |
