From d671ad30ee57704aec9cf0c3b26e911154a188f5 Mon Sep 17 00:00:00 2001 From: Matthias Borremans Date: Mon, 24 May 2021 22:11:49 +0200 Subject: [PATCH] First try making mealie a PWA --- .../public/images/android-chrome-192x192.png | Bin 0 -> 6949 bytes .../public/images/android-chrome-384x384.png | Bin 0 -> 19887 bytes frontend/public/images/apple-touch-icon.png | Bin 0 -> 7618 bytes frontend/public/images/browserconfig.xml | 9 ++++ frontend/public/images/favicon-16x16.png | Bin 0 -> 938 bytes frontend/public/images/favicon-32x32.png | Bin 0 -> 1464 bytes frontend/public/images/favicon.ico | Bin 0 -> 15086 bytes frontend/public/images/mstile-150x150.png | Bin 0 -> 6366 bytes frontend/public/images/safari-pinned-tab.svg | 15 ++++++ frontend/public/index.html | 16 +++++- frontend/public/main.js | 9 ++++ frontend/public/manifest.json | 20 +++++++ frontend/public/sw.js | 51 ++++++++++++++++++ 13 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 frontend/public/images/android-chrome-192x192.png create mode 100644 frontend/public/images/android-chrome-384x384.png create mode 100644 frontend/public/images/apple-touch-icon.png create mode 100644 frontend/public/images/browserconfig.xml create mode 100644 frontend/public/images/favicon-16x16.png create mode 100644 frontend/public/images/favicon-32x32.png create mode 100644 frontend/public/images/favicon.ico create mode 100644 frontend/public/images/mstile-150x150.png create mode 100644 frontend/public/images/safari-pinned-tab.svg create mode 100644 frontend/public/main.js create mode 100644 frontend/public/manifest.json create mode 100644 frontend/public/sw.js diff --git a/frontend/public/images/android-chrome-192x192.png b/frontend/public/images/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..7896704eb4a71e6dca51ce0205791a3b6c0c7fc2 GIT binary patch literal 6949 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 at^!&S7Qp>9(tZHk0%V4=GOjhce&-(y7vWm~ literal 0 HcmV?d00001 diff --git a/frontend/public/images/apple-touch-icon.png b/frontend/public/images/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a70037b7c03f06e8f8928be827913d7888cf88b GIT binary patch literal 7618 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 + + + + + #da532c + + + diff --git a/frontend/public/images/favicon-16x16.png b/frontend/public/images/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..c399bc701ab825a00f448e25819310c8a362121c GIT binary patch literal 938 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>F^ z*#^`IRQ$Bt^ht}_`(14>7e>9^RQdDOt=DS{zui9gq($RNlgg78^$~6Y9(g{=;YqXV$D^}9 z9GLjH5vV}H1YeL z!>^a8e!I2rX`khjHk~h5xBvO_8tC`GzrH|q4ej|3t*VM+u8d6|G%%-cL781&zCn(C)mDTk@2Km@7t{dS^v7sfZ@(l666=W z5(&&-@<$RV&Y0xw?!uJDU6TUju$OrHy0SlIl@JzDxqbH^Fj^RHdb&7Emw`<^Cuz{(B%W|H6h39Gdq%>N*@kw&X|nUsnEP{lk;o%9 z1_o9J23@m^{ZKUI=BH$)RpQq0`*`;!poZ|Okcg6?#Bzm#qWrYXoK%I9%7Rpd%z~0+ z28N0`k3aEn6ozSNobo??#`9?q1G6%>UNX0^vat7L5oTcpmj;u=Da^{7LljQmxN_pi knIkes*iScjEb!7}cqJ}a^2y0`D$oiBPgg&ebxsLQ05DL+Z2$lO literal 0 HcmV?d00001 diff --git a/frontend/public/images/favicon-32x32.png b/frontend/public/images/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..b4919b7f59a4bd3bcb522ed10dab824933424798 GIT binary patch literal 1464 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 literal 0 HcmV?d00001 diff --git a/frontend/public/images/mstile-150x150.png b/frontend/public/images/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a852fd1e89b18e7ee2176a55d1eca26f3b6c0b GIT binary patch literal 6366 zcmdscX*gSL@ORWsVyP{Hh|*Sz5)BQd2({G`t);cp7DWY7QIal}*o)Y@5hbnS@f0n( zJQO8rsUoEI+N#zTQTzU$Uhk*(!~6CB;eXC`u5+FH%x~^FbI;5@GbagaV+Ij`34lN# zh=sYyWe|u%=p|BfLZl>x;b8+)y!brIFDC zfJiFR!oL&+f6>kcjRcS2{)ub+sxkl8_zeLq%7PIoa7VQ zlZabsIq6>=gg%kRbvPOjD{F)fODOf<#ZOG$N%~6E<27O*Zr272vu!OK4&8 zg(%I9ZA{`w9-M-2nRs3BwjbbFZ+F9>>*M;-n(+I)mFip$S1CWv!;PoE-a%-J!!djZ zfz6*9-+Y>AQ}x++ac{u3r)r7>-5-q-iE`A?_ff8&LfYTmQ&)ItwR>9w?RDv}0c1z( z5>74m^8-btYaBBo)*nE)#`YnoC(}0G1f}-h%Z#Vt?xvgboHoIhHrN?Z*KcyjRTgxm zPyDEl)43BR^nyl{>d^2>dp#RiB|6qpUq=>DehDwAyuH06UGOZ)K z3!>yOPMkY}UL+dqM~sZ%D{CN&yFuKITe}-#)81c?(UgYIH%+|u5HexjA*d84D;;=g zQ$y)1BViik?q+bR9}An5VCo{)g;GtpFwAERGOdsw9chS58&%iT>y2&nq<2RiSy+=l zQQ4Q zO77Skh|b~P9`v?mCUkn^Sc$$i#tv?jFBiL @o;Dg|lUn3RuRj(pI4Ph!xnBqm{u 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 literal 0 HcmV?d00001 diff --git a/frontend/public/images/safari-pinned-tab.svg b/frontend/public/images/safari-pinned-tab.svg new file mode 100644 index 000000000..af451c779 --- /dev/null +++ b/frontend/public/images/safari-pinned-tab.svg @@ -0,0 +1,15 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + diff --git a/frontend/public/index.html b/frontend/public/index.html index 2274656d0..d5d2d9c74 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -4,8 +4,15 @@ + + + + + + + - Mealie + Mealie @@ -14,6 +21,13 @@ We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.
+ diff --git a/frontend/public/main.js b/frontend/public/main.js new file mode 100644 index 000000000..e321a489b --- /dev/null +++ b/frontend/public/main.js @@ -0,0 +1,9 @@ +if ('serviceWorker' in navigator) { + navigator.serviceWorker.register('/sw.js') + .then(function(registration) { + console.log('Registration successful, scope is:', registration.scope); + }) + .catch(function(error) { + console.log('Service worker registration failed, error:', error); + }); +} \ No newline at end of file diff --git a/frontend/public/manifest.json b/frontend/public/manifest.json new file mode 100644 index 000000000..2c38c9578 --- /dev/null +++ b/frontend/public/manifest.json @@ -0,0 +1,20 @@ +{ + "name": "Mealie", + "short_name": "Mealie", + "start_url": "index.html", + "icons": [ + { + "src": "images/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "images/android-chrome-384x384.png", + "sizes": "384x384", + "type": "image/png" + } + ], + "theme_color": "#E17B20", + "background_color": "#898989", + "display": "fullscreen" +} diff --git a/frontend/public/sw.js b/frontend/public/sw.js new file mode 100644 index 000000000..88737622d --- /dev/null +++ b/frontend/public/sw.js @@ -0,0 +1,51 @@ +self.addEventListener("install", function(event) { + event.waitUntil(preLoad()); +}); + +var preLoad = function(){ + console.log("Installing web app"); + return caches.open("offline").then(function(cache) { + console.log("caching index and important routes"); + return cache.addAll([ "/","/recipes/all"]); + }); +}; + +self.addEventListener("fetch", function(event) { + event.respondWith(checkResponse(event.request).catch(function() { + return returnFromCache(event.request); + })); + event.waitUntil(addToCache(event.request)); +}); + +var checkResponse = function(request){ + return new Promise(function(fulfill, reject) { + fetch(request).then(function(response){ + if(response.status !== 404) { + fulfill(response); + } else { + reject(); + } + }, reject); + }); +}; + +var addToCache = function(request){ + return caches.open("offline").then(function (cache) { + return fetch(request).then(function (response) { + console.log(response.url + " was cached"); + return cache.put(request, response); + }); + }); +}; + +var returnFromCache = function(request){ + return caches.open("offline").then(function (cache) { + return cache.match(request).then(function (matching) { + if(!matching || matching.status == 404) { + return cache.match("offline.html"); + } else { + return matching; + } + }); + }); +}; \ No newline at end of file