/** append by ecs */
// 以下为学生端添加内容
console.log("sw printing before chrome58StopHere");
var stop = true;
// (function() {
//   try {
//     Function("var a = {...{}};");
//     stop = false;
//   } catch (error) {
//     console.log(error);
//   }
// })();
console.log("sw printing after chrome58StopHere ", stop);

// chrome 58 这个会报错，所以不执行
// if (!stop) {
//   self.addEventListener("fetch", event => {
//     // Prevent the default, and handle the request ourselves.
//     if (
//       event.request.url.startsWith(
//         "https://ecs-test-static.qmth.com.cn/comm-ques-bank/dev/audio"
//       ) ||
//       event.request.url.startsWith(
//         "https://ecs-static.qmth.com.cn/comm-ques-bank/prod/audio/"
//       )
//     ) {
//       event.respondWith(
//         (async function() {
//           // console.log("fetch intercepted");
//           // Try to get the response from a cache.
//           const cachedResponse = await caches.match(event.request);
//           // Return it if we found one.
//           if (cachedResponse) {
//             console.log("cache res", event.request.url);
//             return cachedResponse;
//           }

//           console.log("fetch audio intercept, try to load all");
//           const res = await fetch(event.request.url);

//           const reader = res.body.getReader();

//           // Step 2: get total length
//           const contentLength = +res.headers.get("Content-Length");

//           if (contentLength === 0) {
//             return fetch(event.request);
//           }

//           // Step 3: read the data
//           let receivedLength = 0; // received that many bytes at the moment
//           let chunks = []; // array of received binary chunks (comprises the body)
//           // eslint-disable-next-line
//           while (true) {
//             const { done, value } = await reader.read();

//             if (done) {
//               break;
//             }

//             chunks.push(value);
//             receivedLength += value.length;

//             // console.log(`Received ${receivedLength} of ${contentLength}`);

//             self.clients.matchAll().then(function(clients) {
//               if (clients && clients.length) {
//                 clients.forEach(function(client) {
//                   client.postMessage([
//                     event.request.url,
//                     receivedLength,
//                     contentLength,
//                   ]);
//                 });
//               }
//             });
//           }

//           // Step 4: concatenate chunks into single Uint8Array
//           // let chunksAll = new Uint8Array(receivedLength); // (4.1)
//           // let position = 0;
//           // for (let chunk of chunks) {
//           //   chunksAll.set(chunk, position); // (4.2)
//           //   position += chunk.length;
//           // }

//           // const blob = await res.clone().blob();
//           // const blob = new Blob([chunksAll.buffer]);
//           const blob = new Blob(chunks);
//           const responseFinal = new Response(blob, {
//             headers: {
//               "Content-Type": "audio/mp3",
//               "Content-Length": contentLength,
//             },
//           });

//           caches.open("audios").then(function(cache) {
//             cache.put(event.request, responseFinal.clone());
//           });

//           return responseFinal.clone();
//           // If we didn't find a match in the cache, use the network.
//           // return fetch(event.request);
//         })()
//       );
//     }
//   });
// }
console.log("sw printing end");
