diff --git a/app/app/Http/Controllers/HomeController.php b/app/app/Http/Controllers/HomeController.php index c5c94e18..cb558319 100644 --- a/app/app/Http/Controllers/HomeController.php +++ b/app/app/Http/Controllers/HomeController.php @@ -37,7 +37,13 @@ public function index(Request $request) 'default_location' => BaseUser::getDefaultLocation(), 'google_map_api_key' => config('app.google_map_api_key'), 'turn_off_maps' => config('app.turn_off_maps'), - 'location_search_options' => $location_search_options + 'location_search_options' => $location_search_options, + 'firebase_api_key' => config('app.firebase_api_key'), + 'firebase_auth_domain' => config('app.firebase_auth_domain'), + 'firebase_database_url' => config('app.firebase_database_url'), + 'firebase_project_id' => config('app.firebase_project_id'), + 'firebase_storage_bucket' => config('app.firebase_storage_bucket'), + 'firebase_messaging_sender_id' => config('app.firebase_messaging_sender_id') ]); } diff --git a/app/app/Http/Controllers/PWAController.php b/app/app/Http/Controllers/PWAController.php index e2d4900a..c0e774cd 100644 --- a/app/app/Http/Controllers/PWAController.php +++ b/app/app/Http/Controllers/PWAController.php @@ -34,4 +34,4 @@ public function manifest() ] ]); } -} +} \ No newline at end of file diff --git a/app/config/app.php b/app/config/app.php index 95687005..7c343a5b 100644 --- a/app/config/app.php +++ b/app/config/app.php @@ -118,6 +118,16 @@ 'cipher' => 'AES-256-CBC', + /* Firebase keys + | Will be used for push notifications + */ + 'firebase_api_key' => env('FIREBASE_API_KEY', ''), + 'firebase_auth_domain'=> env('FIREBASE_AUTH_DOMAIN', ''), + 'firebase_database_url' => env('FIREBASE_DATABASE_URL, '), + 'firebase_project_id' => env('FIREBASE_PROJECT_ID', ''), + 'firebase_storage_bucket' => env('FIREBASE_STOREAGE_BUCKET', ''), + 'firebase_messaging_sender_id' => env('FIREBASE_MESSAGING_SENDER_ID', ''), + /* |-------------------------------------------------------------------------- | Logging Configuration diff --git a/app/package.json b/app/package.json index 80a1f096..eaa89a88 100644 --- a/app/package.json +++ b/app/package.json @@ -15,5 +15,8 @@ "lodash": "^4.16.2", "vue": "^2.0.1", "vue-resource": "^1.0.3" + }, + "dependencies": { + "firebase": "^5.3.0" } } diff --git a/app/public/js/firebase-messaging-sw.js b/app/public/js/firebase-messaging-sw.js new file mode 100644 index 00000000..63ef81bb --- /dev/null +++ b/app/public/js/firebase-messaging-sw.js @@ -0,0 +1,6 @@ +importScripts('https://www.gstatic.com/firebasejs/4.8.1/firebase-app.js'); +importScripts('https://www.gstatic.com/firebasejs/4.8.1/firebase-messaging.js'); +firebase.initializeApp({ + messagingSenderId: "your messagingSenderId again" +}); +const messaging = firebase.messaging(); \ No newline at end of file diff --git a/app/public/js/service_worker_script.js b/app/public/js/service_worker_script.js new file mode 100644 index 00000000..cd208692 --- /dev/null +++ b/app/public/js/service_worker_script.js @@ -0,0 +1,13 @@ +var url= window.location.href; +var pos = url.search('using_pwa'); + +if (pos+1 && url[pos+8] && 'serviceWorker' in navigator) { + navigator.serviceWorker + .register('./service-worker.js', { scope: './'}) + .then((registration)=> { + firebase.messaging().useServiceWorker(registration); + }) + .catch(function(err) { + console.log("Service Worker Failed to Register", err); + }) +} \ No newline at end of file diff --git a/app/public/service-worker.js b/app/public/service-worker.js new file mode 100644 index 00000000..279efa3e --- /dev/null +++ b/app/public/service-worker.js @@ -0,0 +1,78 @@ +var cacheName = 'v1'; + +var cacheFiles = []; + +self.addEventListener('install', function(e) { + try { + e.waitUntil( + caches.open(cacheName).then(function(cache) { + return cache.addAll(cacheFiles); + }) + ) + } catch(e) { + console.log(e); + } + +}) + +self.addEventListener('activate', function(e) { + e.waitUntil( + caches.keys().then(function(cacheNames) { + return Promise.all(cacheNames.map(function(thisCacheName) { + + if (thisCacheName !== cacheName) { + return caches.delete(thisCacheName); + } + })); + }) + ); + e.waitUntil( + + caches.keys().then(function(cacheNames) { + return Promise.all(cacheNames.map(function(thisCacheName) { + + if (thisCacheName !== cacheName) { + return caches.delete(thisCacheName); + } + })); + }) + ); +}) + +self.addEventListener('fetch',function(e) { + + if (e.request.url.indexOf('https://maps.googleapi.com') !== 0 || + e.request.url.indexOf('http://maps.googleapis.com') !== 0) { + e.respondWith( + caches.match(e.request) + .then(function(response) { + + if (response) { + return response; + } + + var requestClone = e.request.clone(); + return fetch(requestClone) + .then(function(response) { + + if (!response) { + return response; + } + + var responseClone = response.clone(); + caches.open(cacheName).then(function(cache) { + cache.put(e.request, responseClone) + .catch(function(err) { + console.log('Post Request Made', err); + }); + return response; + }); + + }) + .catch(function(err) { + console.log('[ServiceWorker] Error Fetching & Caching New Data', err); + }); + }) + ); + } +}) \ No newline at end of file diff --git a/app/resources/views/pages/home.blade.php b/app/resources/views/pages/home.blade.php index b8820924..be73bb43 100644 --- a/app/resources/views/pages/home.blade.php +++ b/app/resources/views/pages/home.blade.php @@ -4,6 +4,7 @@ + + + + + + + @stop @section('content')