/var/www/qr4y.com/www/app
Edit: /var/www/qr4y.com/www/app/flutter_service_worker.js (22742B)
'use strict';
const MANIFEST = 'flutter-app-manifest';
const TEMP = 'flutter-temp-cache';
const CACHE_NAME = 'flutter-app-cache';
const RESOURCES = {"flutter_bootstrap.js": "62240dc5682859e7a7ce726d7f248037",
"version.json": "f5da916ab75c94fbfcb6605cff99fef5",
"splash/img/light-2x.png": "e62de9b5322fbcd0e1172f4b2c8d8191",
"splash/img/dark-4x.png": "b50865f3b661851069527d9a5cdc5bec",
"splash/img/light-3x.png": "cfadc76e37616b020653ebafa1345ef7",
"splash/img/dark-3x.png": "cfadc76e37616b020653ebafa1345ef7",
"splash/img/light-4x.png": "b50865f3b661851069527d9a5cdc5bec",
"splash/img/dark-2x.png": "e62de9b5322fbcd0e1172f4b2c8d8191",
"splash/img/dark-1x.png": "1cb2188b6ad95ea9177312e2f017962b",
"splash/img/light-1x.png": "1cb2188b6ad95ea9177312e2f017962b",
"splash/splash.js": "123c400b58bea74c1305ca3ac966748d",
"splash/style.css": "3e8699dd65a865ff991ec5b47a93643d",
"index.html": "4b0aa93fe254254afb7203b4b6ff6ac6",
"/": "4b0aa93fe254254afb7203b4b6ff6ac6",
"main.dart.js": "2b62fabeffcbe6ac1c8e8c9fa98c2a24",
"flutter.js": "76f08d47ff9f5715220992f993002504",
"favicon/site.webmanifest": "053100cb84a50d2ae7f5492f7dd7f25e",
"favicon.png": "af12f8a72d4a1c813075031bec53ab4f",
"icons/favicon-16x16.png": "e2c52bf89eab244ffeedaefe10e21a98",
"icons/favicon.ico": "a143c8706d828561c73f9f4730a218d7",
"icons/android-chrome-192x192.png": "39a44893b1f24e66a33abcf92a06bba1",
"icons/apple-touch-icon.png": "b601e33f6867caa4e1f72af86752ce83",
"icons/android-chrome-512x512.png": "f5bb623963411e0c54601d841611abc5",
"icons/favicon-32x32.png": "af12f8a72d4a1c813075031bec53ab4f",
"manifest.json": "7541837d4e7e97af2cd10db4c6b1faa9",
"assets/AssetManifest.json": "86fc9ada9b17308a05d999dedcefe427",
"assets/NOTICES": "598084ae03ff5d8e1e781bb730035b79",
"assets/FontManifest.json": "c73aa3f9a59db372d2b7bff2f6f407bb",
"assets/AssetManifest.bin.json": "22e8420763355cdcfc831e2a5225319c",
"assets/shaders/ink_sparkle.frag": "ecc85a2e95f5e9f53123dcaf8cb9b6ce",
"assets/AssetManifest.bin": "b89ec2088d97f0e28e3dfeb4a81441b3",
"assets/fonts/Poppins-Medium.ttf": "a4e11dda40531debd374e4c8b1dcc7f4",
"assets/fonts/Fryo.ttf": "c6a2d26e4e379193e8c882fab063ca29",
"assets/fonts/Pacifico.ttf": "6b6170fe52fb23f505b4e056fefd2679",
"assets/fonts/Poppins-Regular.ttf": "731a28a413d642522667a2de8681ff35",
"assets/fonts/MaterialIcons-Regular.otf": "90c23d578d19f1e4bd98ac8894ea751a",
"assets/fonts/Poppins-Bold.ttf": "7940efc40d8e3b477e16cc41b0287139",
"assets/assets/svg/empty_cart.svg": "87a6fa27b014a593d7f896c693f4e24f",
"assets/assets/apple_pay.json": "518ae43bdd3b3b1466df5d5ac5ee225f",
"assets/assets/images/simcity12.jpg": "ae3e562d129490cf73a187bb713e0d09",
"assets/assets/images/empty_cart.png": "71d65f48565bdb8796519698385b947f",
"assets/assets/images/inside.png": "c713b61e7a621fa81f5d25821c38401d",
"assets/assets/images/pos_terminal2.jpg": "bfcf77e88e2db4b98376b4e4e64a582f",
"assets/assets/images/girl_order2.jpg": "bf5c77c4712fcd8c0d1dccd25fe8c041",
"assets/assets/images/delivery.png": "886081741088546e6a89da2f171783a3",
"assets/assets/images/scan_qr.png": "57ff4f69790b64e77b65e93efe1e0895",
"assets/assets/images/logo_dark_128.png": "48cd94873f3b85b4af8d75c20568ea42",
"assets/assets/images/shopping.png": "e9cf3429187c6cc639ae0ae3d353c93f",
"assets/assets/images/icon512.png": "a64d8ac033d9b206a039553926f2b8ef",
"assets/assets/images/no_photo.png": "ddb7732a39d9ddd7e08338a9dd64cf9b",
"assets/assets/images/logo_128.png": "97b24e91eb3fd84306dfc771175acf9f",
"assets/assets/images/icon128.png": "d9987b95c33e67c6167b837d4acb3817",
"assets/assets/images/delivery_man2.jpg": "a87f1ad36cc9610d5c78c97e58478998",
"assets/assets/images/restorant2.jpg": "2272e31c91d2ad3a4416d9bca90664d6",
"assets/assets/images/caffee2.jpg": "925e1a4b3e217d5c28cf5e3d155412ff",
"assets/assets/images/map/2k_earth-day.jpg": "eec7a2f8c47c27b5c5904b484b717986",
"assets/assets/images/map/2k_earth-night.jpg": "73d343be0ade106aedd0fb5942db72ba",
"assets/assets/images/map/2k_stars.jpg": "aa84ebe0af724ac3a335285c2808971a",
"assets/assets/images/girl3s.jpg": "06a918ed293a2630a66faa8420af2433",
"assets/assets/images/logo_dark_256.png": "182d269a73f36198b558a2e7896b5a11",
"assets/assets/images/no_companies_near2.jpg": "4bad67609d504d246827824b42e7dec4",
"assets/assets/images/girl2s.jpg": "88261e9d099fde9a6a9173529639a323",
"assets/assets/images/no_companies.png": "90be7f890c3202870c3e4795e5d0fb75",
"assets/assets/images/greece2.jpg": "b33011c2ef75481636add94a7d35a06c",
"assets/assets/images/icon256.png": "cf1a601cb859bc86db21e277cacc5900",
"assets/assets/images/logo_256.png": "a7284c39dec9a27a2a0ad86372a6dc99",
"assets/assets/images/village.jpg": "3ff593e165ce80b6738bfa8af3738c40",
"assets/assets/images/delivery_island2.jpg": "e94de236c798d16f2fbab1c82badc206",
"assets/assets/images/small_girl_order2.jpg": "512eb7568797362bd0bcdc40269619cd",
"assets/assets/images/delivery_not_possible2.jpg": "b78bc081aa605ac03432cb817c2e150d",
"assets/assets/images/scan_dark_qr.png": "aba0f127bbc206b12c819899508d4499",
"assets/assets/images/takeaway.png": "99bc35f55034bc72b396dd823f8d5411",
"assets/assets/images/simcity22.jpg": "296759dd7988dd16022df18f0bd97be1",
"assets/assets/images/empty_cart2.png": "e342c5b68e4d0e19db250bfc15d85a29",
"assets/assets/sounds/button.mp3": "79a495d709148e371220c1c413bc56c1",
"assets/assets/sounds/balance.mp3": "a96c3724d646b84a825f701a05bcaa51",
"assets/assets/sounds/error.mp3": "97fbc3d6c502d5ec8023b4a401694c22",
"assets/assets/sounds/click.mp3": "b4d9b1b2c915c0ec523a40f18d525b66",
"assets/assets/sounds/sonar.mp3": "f180db59e4f955452ebb7965081ab0fb",
"assets/assets/sounds/info5.mp3": "452f5187078d776068dfcb70f99e244c",
"assets/assets/sounds/login2.mp3": "d885990bbd8bd95ed3fea2469ccc2b65",
"assets/assets/sounds/shutdown.mp3": "865de053a59bee9e375678257db1541c",
"assets/assets/sounds/info4.mp3": "dda838d8d530058e508dac1b4418031a",
"assets/assets/sounds/call.mp3": "ea3daf9be8f8b2d831de030d87aae0ca",
"assets/assets/sounds/info3.mp3": "7d2cf568ca28fa8af391bec9a79c014f",
"assets/assets/sounds/info2.mp3": "9b1ccabe706a658699022048bcf02197",
"assets/assets/sounds/click3.mp3": "5beda9aa4584b85940b33bd0da5bb0e7",
"assets/assets/sounds/click2.mp3": "53bb31d3db79bd59dca6c108dc0712d7",
"assets/assets/sounds/beep.mp3": "bdbaa160fdf06d628471a2a97d2b8623",
"assets/assets/sounds/cosmo_alert.mp3": "781e465c8ff9acde11278f4286eacf56",
"assets/assets/sounds/beep3.mp3": "091985266bf9a6a055c9f473ba01c9ce",
"assets/assets/sounds/login.mp3": "9390c23fd5b5b7f2a8db779fcfb89715",
"assets/assets/sounds/bell.mp3": "e4b275385a1ba736c8301cee9dc1acac",
"assets/assets/sounds/info.mp3": "79e4cc64d4d2466aae6131684582b01a",
"assets/assets/sounds/error2.mp3": "25b0e6b3314ffcb1d13d75651d95bd64",
"assets/assets/sounds/bell2.mp3": "513ca4b025ded4960c37e2411ca7567e",
"assets/assets/sounds/sonar2.mp3": "b2995c815ab5c2ad5fcb326d6c1ecc84",
"assets/assets/sounds/bike_alert.mp3": "37f7c30ef011dd14dcd94e1f40738291",
"assets/assets/sounds/lift_alert.mp3": "152192f92be43bfd8f9d2ec9a69d7902",
"assets/assets/google_pay.json": "d844647ca4b41170b4631131cd4857d1",
"assets/assets/lottie/ok.json": "d5f782390a29704806961a7013870025",
"assets/assets/lottie/search_point.json": "71986760b6ddd616782998c4f251dcb3",
"assets/assets/lottie/cart.json": "54ae87c05561725ee6566a706dcb875d",
"assets/assets/lottie/search.json": "c1019837d0bfa510870180c983890b9a",
"assets/assets/lottie/delivery.json": "a60647bc9a41763c7ae2efc01f731d69",
"assets/assets/lottie/planet_route.json": "2db2a404b8af14ede8017a7613b8bc4f",
"assets/assets/lottie/globe_point.json": "f74c2b6477a1b5bfe0ba334931061e8a",
"assets/assets/lottie/orders.json": "54844a70ef95980c159b81fdb63016a4",
"assets/assets/lottie/thanks.json": "b73824ecb6da7567a2efcf112783f814",
"assets/assets/lottie/loading_bubbles.json": "1e792e00ff1b1656ae192bb0c81291cd",
"assets/assets/lottie/route.json": "ab8acee642bed6071a3d37bcef21cac5",
"assets/assets/lottie/graph.json": "3a7f31199557a098af57d83a5af26b9c",
"assets/assets/lottie/shopping.json": "7d9db972ffe2b369ac15ebf13a4e4876",
"assets/assets/lottie/star.json": "ebbc4c2d3413449618af17cc71c16ed8",
"assets/assets/lottie/favorite.json": "478d9086086c246ee703503787f40f80",
"assets/assets/lottie/phone_point.json": "a704fb343fd81805619cf39718758465",
"assets/assets/lottie/map.json": "9a9bd4355eaaa3c47d2ef7c503a64913",
"assets/assets/lottie/on_map.json": "12b5d833c44d9b80243c7212291f1c24",
"assets/assets/lottie/cancel.json": "2554839613f27dd8a94e9381315d637a",
"assets/assets/icon/info.png": "a0f915cc930423857cee1e1a1002db4c",
"assets/assets/icon/apple2.png": "acab4cc6037be668b1d2815a66fe86a1",
"assets/assets/icon/plus.png": "b37f80f9b4990541e8570422a4ba6989",
"assets/assets/icon/plus2.png": "b37f80f9b4990541e8570422a4ba6989",
"assets/assets/icon/category.png": "b568275600c6d92f55fbddf3122d3278",
"assets/assets/icon/marker_qr.png": "79f7c7304c09771a8a679510b6445d0c",
"assets/assets/icon/gear2.png": "ad5522404662e2725d83528924f7d753",
"assets/assets/icon/marker_tracking.png": "da41a26862de9f1b148ac3c258258ff8",
"assets/assets/icon/wallet.png": "c1f6dc184b09e05e84e5c915442b253c",
"assets/assets/icon/circle_blue.png": "c25b1dde1e105721850843b7b28e741c",
"assets/assets/icon/satellite.png": "1652c45b2314a7491ad958c18f18f477",
"assets/assets/icon/ok.png": "3b69c3c5d935bf338f862c6474a54907",
"assets/assets/icon/cart2.png": "ee5502d2334f074d5a398139973727df",
"assets/assets/icon/flags/el_3d.png": "948fbdd3bf264e989fdc05723f7447d0",
"assets/assets/icon/flags/uk_3d.png": "82cc8854fbf00b554ffe557f78c073d4",
"assets/assets/icon/flags/el.png": "7374f9252683d03836d501a2709bd213",
"assets/assets/icon/flags/kk_3d.png": "a096a143e97b404af77ba6d0d849e383",
"assets/assets/icon/flags/ru.png": "0488e8a8dc452f5a9befe686d23a35ad",
"assets/assets/icon/flags/kk.png": "8ba8310122b5ddaa9ff260bb5edb4683",
"assets/assets/icon/flags/uk.png": "17ef93f071b5a9d1960b776790ecea0b",
"assets/assets/icon/flags/ru_3d.png": "2d2d7d60ec9d06702b89d5513ea80602",
"assets/assets/icon/cart.png": "42e00085be5d258f9aeee54485f2400c",
"assets/assets/icon/cart3.png": "096b3ea38e03ed4ac938b29b1901d4f2",
"assets/assets/icon/settings.png": "1d6c3d95a04fca4e286207604342e406",
"assets/assets/icon/bills.png": "b469f741aa03c5025369fe7e6f592be0",
"assets/assets/icon/map_marker.png": "b866f218ebbf969cb44d56867f47fc27",
"assets/assets/icon/circle_red.png": "5398068fa39ab878cc6d760ea6027601",
"assets/assets/icon/marker2.png": "6b0a285ef58bf0e5bba54a73e5540a85",
"assets/assets/icon/lock.png": "f1147ba3bd947f9fcea6e307c7410b46",
"assets/assets/icon/delivery.png": "86409ba45ca563f124222bf2a77a5386",
"assets/assets/icon/marker_region.png": "0ee78193039fce9b98bc4faf52284d56",
"assets/assets/icon/wallet2.png": "45a4fce364f05ef60f9db166749deafc",
"assets/assets/icon/forward2.png": "8b22b95f90506dd2e5b9c61b67a1d321",
"assets/assets/icon/icon_256.png": "a7284c39dec9a27a2a0ad86372a6dc99",
"assets/assets/icon/marker_new.png": "602242e9f48f30598e43391405648916",
"assets/assets/icon/green_circle.png": "4a754e1d972962cb8ab814879a4cd267",
"assets/assets/icon/circle_black.png": "1978ece8c22afccb7273f26bb9413c9c",
"assets/assets/icon/red_circle.png": "5398068fa39ab878cc6d760ea6027601",
"assets/assets/icon/in_transit.png": "3a9bd6ab69586695880eb3b1061c79d6",
"assets/assets/icon/user.png": "f79a614bda915806580117dd7ee332bd",
"assets/assets/icon/list_0.png": "d4880bf6ea2ef6fdc56760b636a43376",
"assets/assets/icon/no_photo.png": "ddb7732a39d9ddd7e08338a9dd64cf9b",
"assets/assets/icon/list_1.png": "98260ebfc93435590edc0943face5801",
"assets/assets/icon/offline.png": "171370242dc77f356d741e20305cec30",
"assets/assets/icon/marker_visit2.png": "4b154dfec32e4e7bbd722c4ad108dc7c",
"assets/assets/icon/hot2.png": "71012ec9a3c8552b5f042a11fc5ef7c6",
"assets/assets/icon/save2.png": "5ceb9ecc76bf5ba414c496f8d28ef179",
"assets/assets/icon/list_2.png": "d38c1a058612c578febf683b3722d1a6",
"assets/assets/icon/category_up.png": "1f23b86bc6f2b7c3004be4ed3b70e3a0",
"assets/assets/icon/moon.png": "d3646fabd8945492c9a5252113510a36",
"assets/assets/icon/waiter.png": "1696708ecb27eb5d97338f8895382176",
"assets/assets/icon/deliver_food.png": "31470cf3fc75e3a4784049556607d586",
"assets/assets/icon/users.png": "d8fc3523f90fbd2c1cf931fb2162fcdd",
"assets/assets/icon/basket.png": "8ad16121bc53495f67078504b3b3cf41",
"assets/assets/icon/shutdown.png": "4602a773c4b703c0045e976663cacfac",
"assets/assets/icon/minus.png": "a798dff9943fb9b29ab4dda425e4f365",
"assets/assets/icon/product_group.png": "f5704e4682a1085718523f2d248e1838",
"assets/assets/icon/apple.png": "2088c87724d0414dea1e49a8091b5ce0",
"assets/assets/icon/graph.png": "bbe4df794f9e5a4a64a4bfd1292b6c83",
"assets/assets/icon/menu.png": "d38c1a058612c578febf683b3722d1a6",
"assets/assets/icon/company.png": "82746c35176ed92d2e893122df779d0e",
"assets/assets/icon/qr_code2.png": "b502f53d98c50884937a23a851b25542",
"assets/assets/icon/forward.png": "789aa09537c1d18830644420e33a92fe",
"assets/assets/icon/favorite_empty.png": "34d3a99bfad696b866c63996ba139a57",
"assets/assets/icon/center_point.png": "2d6ec3e418f3ef0ad1dc45b4dcaddef2",
"assets/assets/icon/trash2.png": "9fa129707c2b857d784d53e5d8857f51",
"assets/assets/icon/medal.png": "9603377ecf5d9b2cc9592bc9028d88e5",
"assets/assets/icon/trash3.png": "b17801f487a427e4ed35b79fa967d328",
"assets/assets/icon/circle_green.png": "4a754e1d972962cb8ab814879a4cd267",
"assets/assets/icon/qr_code.png": "f434e34a2608990b574aca6e40663871",
"assets/assets/icon/waiter/wifi.png": "441f8c9061bdbb5cd57a2732c8a157b6",
"assets/assets/icon/waiter/my_orders.png": "9ce595fdd23466c590dea2afb8011541",
"assets/assets/icon/waiter/alarm.png": "33d9fe7c6487211435a2e4db42d6da32",
"assets/assets/icon/waiter/qr_code.png": "5ee976e3eea7213493e8b7b0126d4522",
"assets/assets/icon/waiter/rooms.png": "65cfcf520da80c2a5bd704677cd4d356",
"assets/assets/icon/waiter/orders.png": "1696708ecb27eb5d97338f8895382176",
"assets/assets/icon/marker_visit.png": "1f0ebf95bdf518effafa6b8b47da66ac",
"assets/assets/icon/icon_dark_256.png": "182d269a73f36198b558a2e7896b5a11",
"assets/assets/icon/star_empty.png": "96746bb9459c6a25523940d0cae1fdc3",
"assets/assets/icon/center_pin_new.png": "618a170362d53be4254f5815856eec12",
"assets/assets/icon/delete.png": "0786f287cbc00a2c5e26d614166582eb",
"assets/assets/icon/exit.png": "4602a773c4b703c0045e976663cacfac",
"assets/assets/icon/products.png": "4c5f6f46a67d30349c827362c9f1b45c",
"assets/assets/icon/center_pin.png": "bae2c28d4617c7e5db4b1b3620d85c71",
"assets/assets/icon/topic.png": "4a3ff2cde3ee56e3a725d2fce894422a",
"assets/assets/icon/online.png": "0a6f85f899564c590fc70fae19043ec0",
"assets/assets/icon/marker_home.png": "ea9b23e3f3d3b477c06f80b34b5f1fee",
"assets/assets/icon/locate.png": "7daf3d15d343983e1d59958aac465c83",
"assets/assets/icon/edit.png": "20bfad6316d6c544223556329149bcb1",
"assets/assets/icon/star.png": "65194e0dbaa0ab32a38b6478665fb4b1",
"assets/assets/icon/marker_home2.png": "923d853be439b2ff0c418f81a51e84d7",
"assets/assets/icon/sun.png": "719856e669efd6a4d71aa4d9526ac882",
"assets/assets/icon/trash.png": "fd6ccf07ce30fbbfc3363ae80279d03f",
"assets/assets/icon/forward_button.png": "5c87a4a3669829ca573a5219acdf54c0",
"assets/assets/icon/google.png": "e4990471161040f3f1f2b3de2fcb16fe",
"assets/assets/icon/bill.png": "b81676be61b8306bb81137fb2e8de40f",
"assets/assets/icon/marker_h.png": "d97d9c8aa2af04f4e493ffa4a98031bf",
"assets/assets/icon/edit_pin.png": "3124368d11c988735099e36500330681",
"assets/assets/icon/back.png": "97662601e7d50bd4f1aba81fc3db0050",
"assets/assets/icon/favorite.png": "fb01b3d77477793fe6971a61a23b0877",
"assets/assets/icon/save.png": "ed5dd82b1235dad26728264afe68e0ba",
"assets/assets/icon/takeaway.png": "7a252c05f2c14ce2426537e5548b18a9",
"assets/assets/icon/marker.png": "27bea29e5ed1ec57512c48551c880581",
"assets/assets/icon/product_type.png": "bd67c0638546e2b5f201e789dedb006c",
"canvaskit/skwasm_st.js": "d1326ceef381ad382ab492ba5d96f04d",
"canvaskit/skwasm.js": "f2ad9363618c5f62e813740099a80e63",
"canvaskit/skwasm.js.symbols": "80806576fa1056b43dd6d0b445b4b6f7",
"canvaskit/canvaskit.js.symbols": "68eb703b9a609baef8ee0e413b442f33",
"canvaskit/skwasm.wasm": "f0dfd99007f989368db17c9abeed5a49",
"canvaskit/chromium/canvaskit.js.symbols": "5a23598a2a8efd18ec3b60de5d28af8f",
"canvaskit/chromium/canvaskit.js": "34beda9f39eb7d992d46125ca868dc61",
"canvaskit/chromium/canvaskit.wasm": "64a386c87532ae52ae041d18a32a3635",
"canvaskit/skwasm_st.js.symbols": "c7e7aac7cd8b612defd62b43e3050bdd",
"canvaskit/canvaskit.js": "86e461cf471c1640fd2b461ece4589df",
"canvaskit/canvaskit.wasm": "efeeba7dcc952dae57870d4df3111fad",
"canvaskit/skwasm_st.wasm": "56c3973560dfcbf28ce47cebe40f3206"};
// The application shell files that are downloaded before a service worker can
// start.
const CORE = ["main.dart.js",
"index.html",
"flutter_bootstrap.js",
"assets/AssetManifest.bin.json",
"assets/FontManifest.json"];
// During install, the TEMP cache is populated with the application shell files.
self.addEventListener("install", (event) => {
self.skipWaiting();
return event.waitUntil(
caches.open(TEMP).then((cache) => {
return cache.addAll(
CORE.map((value) => new Request(value, {'cache': 'reload'})));
})
);
});
// During activate, the cache is populated with the temp files downloaded in
// install. If this service worker is upgrading from one with a saved
// MANIFEST, then use this to retain unchanged resource files.
self.addEventListener("activate", function(event) {
return event.waitUntil(async function() {
try {
var contentCache = await caches.open(CACHE_NAME);
var tempCache = await caches.open(TEMP);
var manifestCache = await caches.open(MANIFEST);
var manifest = await manifestCache.match('manifest');
// When there is no prior manifest, clear the entire cache.
if (!manifest) {
await caches.delete(CACHE_NAME);
contentCache = await caches.open(CACHE_NAME);
for (var request of await tempCache.keys()) {
var response = await tempCache.match(request);
await contentCache.put(request, response);
}
await caches.delete(TEMP);
// Save the manifest to make future upgrades efficient.
await manifestCache.put('manifest', new Response(JSON.stringify(RESOURCES)));
// Claim client to enable caching on first launch
self.clients.claim();
return;
}
var oldManifest = await manifest.json();
var origin = self.location.origin;
for (var request of await contentCache.keys()) {
var key = request.url.substring(origin.length + 1);
if (key == "") {
key = "/";
}
// If a resource from the old manifest is not in the new cache, or if
// the MD5 sum has changed, delete it. Otherwise the resource is left
// in the cache and can be reused by the new service worker.
if (!RESOURCES[key] || RESOURCES[key] != oldManifest[key]) {
await contentCache.delete(request);
}
}
// Populate the cache with the app shell TEMP files, potentially overwriting
// cache files preserved above.
for (var request of await tempCache.keys()) {
var response = await tempCache.match(request);
await contentCache.put(request, response);
}
await caches.delete(TEMP);
// Save the manifest to make future upgrades efficient.
await manifestCache.put('manifest', new Response(JSON.stringify(RESOURCES)));
// Claim client to enable caching on first launch
self.clients.claim();
return;
} catch (err) {
// On an unhandled exception the state of the cache cannot be guaranteed.
console.error('Failed to upgrade service worker: ' + err);
await caches.delete(CACHE_NAME);
await caches.delete(TEMP);
await caches.delete(MANIFEST);
}
}());
});
// The fetch handler redirects requests for RESOURCE files to the service
// worker cache.
self.addEventListener("fetch", (event) => {
if (event.request.method !== 'GET') {
return;
}
var origin = self.location.origin;
var key = event.request.url.substring(origin.length + 1);
// Redirect URLs to the index.html
if (key.indexOf('?v=') != -1) {
key = key.split('?v=')[0];
}
if (event.request.url == origin || event.request.url.startsWith(origin + '/#') || key == '') {
key = '/';
}
// If the URL is not the RESOURCE list then return to signal that the
// browser should take over.
if (!RESOURCES[key]) {
return;
}
// If the URL is the index.html, perform an online-first request.
if (key == '/') {
return onlineFirst(event);
}
event.respondWith(caches.open(CACHE_NAME)
.then((cache) => {
return cache.match(event.request).then((response) => {
// Either respond with the cached resource, or perform a fetch and
// lazily populate the cache only if the resource was successfully fetched.
return response || fetch(event.request).then((response) => {
if (response && Boolean(response.ok)) {
cache.put(event.request, response.clone());
}
return response;
});
})
})
);
});
self.addEventListener('message', (event) => {
// SkipWaiting can be used to immediately activate a waiting service worker.
// This will also require a page refresh triggered by the main worker.
if (event.data === 'skipWaiting') {
self.skipWaiting();
return;
}
if (event.data === 'downloadOffline') {
downloadOffline();
return;
}
});
// Download offline will check the RESOURCES for all files not in the cache
// and populate them.
async function downloadOffline() {
var resources = [];
var contentCache = await caches.open(CACHE_NAME);
var currentContent = {};
for (var request of await contentCache.keys()) {
var key = request.url.substring(origin.length + 1);
if (key == "") {
key = "/";
}
currentContent[key] = true;
}
for (var resourceKey of Object.keys(RESOURCES)) {
if (!currentContent[resourceKey]) {
resources.push(resourceKey);
}
}
return contentCache.addAll(resources);
}
// Attempt to download the resource online before falling back to
// the offline cache.
function onlineFirst(event) {
return event.respondWith(
fetch(event.request).then((response) => {
return caches.open(CACHE_NAME).then((cache) => {
cache.put(event.request, response.clone());
return response;
});
}).catch((error) => {
return caches.open(CACHE_NAME).then((cache) => {
return cache.match(event.request).then((response) => {
if (response != null) {
return response;
}
throw error;
});
});
})
);
}