Skip to content

Commit 10a23f3

Browse files
committed
Merge release into embed
2 parents 710d153 + 3d064b8 commit 10a23f3

1 file changed

Lines changed: 22 additions & 9 deletions

File tree

src/book-navigation-interceptor-sw.js

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,17 @@ self.addEventListener("activate", (event) => {
1919

2020
self.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+
3233
async function interceptBookRequest(event) {
3334
if (!(await requestCameFromBloomPlayer(event))) {
3435
return fetch(event.request);
@@ -125,13 +126,25 @@ async function retrieveBookData(query) {
125126
}
126127

127128
async 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

Comments
 (0)