@@ -19,16 +19,17 @@ self.addEventListener("activate", (event) => {
1919
2020self . addEventListener ( "fetch" , ( event ) => {
2121 const requestUrl = new URL ( event . request . url ) ;
22- if (
23- event . request . method !== "GET" ||
24- ! requestUrl . pathname . includes ( "/book/" )
25- ) {
22+ if ( event . request . method !== "GET" || ! isBookContentRequest ( requestUrl ) ) {
2623 return ;
2724 }
2825
2926 event . respondWith ( interceptBookRequest ( event ) ) ;
3027} ) ;
3128
29+ function isBookContentRequest ( requestUrl ) {
30+ return ! ! parseBookRequest ( requestUrl ) ;
31+ }
32+
3233async function interceptBookRequest ( event ) {
3334 if ( ! ( await requestCameFromBloomPlayer ( event ) ) ) {
3435 return fetch ( event . request ) ;
@@ -125,13 +126,25 @@ async function retrieveBookData(query) {
125126}
126127
127128async function requestCameFromBloomPlayer ( event ) {
128- const clientId = event . clientId || event . resultingClientId ;
129- if ( clientId ) {
130- const client = await self . clients . get ( clientId ) ;
131- if ( client && client . url . includes ( bloomPlayerPath ) ) {
129+ if ( event . request . referrer . includes ( bloomPlayerPath ) ) {
130+ return true ;
131+ }
132+
133+ if ( ! event . clientId ) {
134+ return false ;
135+ }
136+
137+ try {
138+ const client = await self . clients . get ( event . clientId ) ;
139+ if ( client ?. url . includes ( bloomPlayerPath ) ) {
132140 return true ;
133141 }
142+ } catch ( error ) {
143+ console . error (
144+ "Failed to inspect service worker client for book navigation interception" ,
145+ error
146+ ) ;
134147 }
135148
136- return event . request . referrer . includes ( bloomPlayerPath ) ;
149+ return false ;
137150}
0 commit comments