From 1bca5888f2b1ef7c2d09094e4a26044e6286df9f Mon Sep 17 00:00:00 2001 From: Luke Weiler Date: Mon, 13 Dec 2021 12:46:51 -0500 Subject: [PATCH] Enable PWA (#2142) by lukew3 * add pwa files * Added better 512px icon! (#2146) * updated icon Co-authored-by: Estebene <49330942+Estebene@users.noreply.github.com> Co-authored-by: Jack --- static/images/mt-icon-512.png | Bin 0 -> 6326 bytes static/index.html | 6 ++++++ static/manifest.json | 15 +++++++++++++++ static/sw.js | 15 +++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 static/images/mt-icon-512.png create mode 100644 static/manifest.json create mode 100644 static/sw.js diff --git a/static/images/mt-icon-512.png b/static/images/mt-icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..7a57f90641537cf6946da8a6d442f54cbb3acd67 GIT binary patch literal 6326 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 YEZ;jv^Ic?E|0lJ!hJkvu>f;yx0~YX{>i_@% literal 0 HcmV?d00001 diff --git a/static/index.html b/static/index.html index 930336461..29b766bc5 100644 --- a/static/index.html +++ b/static/index.html @@ -54,6 +54,7 @@ crossorigin="anonymous" referrerpolicy="no-referrer" /> + +
diff --git a/static/manifest.json b/static/manifest.json new file mode 100644 index 000000000..02426b748 --- /dev/null +++ b/static/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "MT", + "name": "Monkeytype", + "start_url": "/", + "icons": [ + { + "src": "/images/mt-icon-512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "background_color": "#323437", + "display": "standalone", + "theme_color": "#323437" +} diff --git a/static/sw.js b/static/sw.js new file mode 100644 index 000000000..900572a4d --- /dev/null +++ b/static/sw.js @@ -0,0 +1,15 @@ +self.addEventListener("install", function (event) { + event.waitUntil( + caches.open("sw-cache").then(function (cache) { + return cache.add("index.html"); + }) + ); +}); + +self.addEventListener("fetch", function (event) { + event.respondWith( + caches.match(event.request).then(function (response) { + return response || fetch(event.request); + }) + ); +});