Browse Source

feat: add costco/servicework.js

Hugh Harlequin 1 year ago
parent
commit
56bb5dd4e8

+ 1 - 0
.gitignore

@@ -14,3 +14,4 @@ npm-debug.log
 yarn-error.log
 /.idea
 /.vscode
+/storage/

+ 20 - 0
app/Http/Controllers/Costco/CostcoController.php

@@ -18,4 +18,24 @@ class CostcoController
 </script>';
         }
     }
+    public function serviceWorker()
+    {
+        $content = view('service-worker.file', [
+            'filesToCaches' => [
+                '/storage/costco/register-serviceworker.js',
+                '/storage/costco/costco-icons.woff',
+                '/storage/costco/logo.png',
+                '/storage/costco/avatar.jpg',
+                '/storage/costco/bar.png',
+                '/storage/costco/menu.jpg',
+                '/storage/costco/480.png',
+                '/storage/costco/JsBarcode.all.min.js',
+                '/costco/',
+            ]
+        ]);
+        $response = \Response::make($content);
+        $response->header('Content-Type', 'application/javascript; charset=utf-8');
+
+        return $response;
+    }
 }

+ 25 - 0
resources/views/service-worker/file.blade.php

@@ -0,0 +1,25 @@
+const cacheVersion = 'v1';
+const filesToCache = {!! json_encode($filesToCaches) !!};
+
+self.addEventListener('install', event => {
+console.log('[ServiceWorker] Install');
+event.waitUntil(
+caches.open(cacheVersion)
+.then(cache => {
+console.log('[ServiceWorker] Caching app shell');
+return cache.addAll(filesToCache);
+})
+);
+});
+
+self.addEventListener('activate', event => {
+console.log('[ServiceWorker] Activate');
+});
+
+self.addEventListener('fetch', event => {
+console.log('[ServiceWorker] fetch', event.request);
+event.respondWith(
+caches.match(event.request)
+.then(response => response || fetch(event.request))
+);
+});

+ 1 - 0
routes/web.php

@@ -19,4 +19,5 @@ Route::get('/', function () {
 
 Route::group(['namespace' => 'Costco', 'prefix' => 'costco'], function () {
     Route::get('/', 'CostcoController@index');
+    Route::get('serviceworker.js', 'CostcoController@serviceWorker');
 });