From 9e3578425fbbf4c0ee54c9761a12824d63ac6fdc Mon Sep 17 00:00:00 2001 From: maartenvn Date: Thu, 28 Oct 2021 23:35:57 +0200 Subject: [PATCH] feat(pwa): add PWA support --- app/static/browserconfig.xml | 9 ++++++ app/static/icons/android-chrome-192x192.png | Bin 0 -> 13871 bytes app/static/icons/android-chrome-256x256.png | Bin 0 -> 16844 bytes app/static/icons/apple-touch-icon.png | Bin 0 -> 13249 bytes app/static/icons/favicon-16x16.png | Bin 0 -> 6365 bytes app/static/icons/favicon-32x32.png | Bin 0 -> 6937 bytes app/static/icons/favicon.ico | Bin 0 -> 13294 bytes app/static/icons/mstile-150x150.png | Bin 0 -> 5890 bytes app/static/icons/safari-pinned-tab.svg | 32 ++++++++++++++++++++ app/static/js/pwa.js | 23 ++++++++++++++ app/static/js/sw.js | 13 ++++++++ app/static/manifest.json | 22 ++++++++++++++ app/templates/layout.html | 24 ++++++++++++++- 13 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 app/static/browserconfig.xml create mode 100644 app/static/icons/android-chrome-192x192.png create mode 100644 app/static/icons/android-chrome-256x256.png create mode 100644 app/static/icons/apple-touch-icon.png create mode 100644 app/static/icons/favicon-16x16.png create mode 100644 app/static/icons/favicon-32x32.png create mode 100644 app/static/icons/favicon.ico create mode 100644 app/static/icons/mstile-150x150.png create mode 100644 app/static/icons/safari-pinned-tab.svg create mode 100644 app/static/js/pwa.js create mode 100644 app/static/js/sw.js create mode 100644 app/static/manifest.json diff --git a/app/static/browserconfig.xml b/app/static/browserconfig.xml new file mode 100644 index 0000000..adc1b7a --- /dev/null +++ b/app/static/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #1c1c1c + + + diff --git a/app/static/icons/android-chrome-192x192.png b/app/static/icons/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..3bfc79e4abaab52bae83db7d2e7e97ceca98a897 GIT binary patch literal 13871 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 literal 0 HcmV?d00001 diff --git a/app/static/icons/android-chrome-256x256.png b/app/static/icons/android-chrome-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..b7edfffd94d415fd130c5397b149bb04786f295b GIT binary patch literal 16844 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 G3i>~OA*|d0 literal 0 HcmV?d00001 diff --git a/app/static/icons/apple-touch-icon.png b/app/static/icons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6fe2039b186a6c8fb485ef01a182cefc9ea26315 GIT binary patch literal 13249 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 literal 0 HcmV?d00001 diff --git a/app/static/icons/favicon-16x16.png b/app/static/icons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..93c2159ecaca332011ceeea298bdf79925fb79e6 GIT binary patch literal 6365 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 ZfL$sQzf*bPtfv+LH6?AuT6vqu{{sa#wDkZ0 literal 0 HcmV?d00001 diff --git a/app/static/icons/favicon.ico b/app/static/icons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..12646e588d14b119f146456a83e6e27a0dd19a0d GIT binary patch literal 13294 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 literal 0 HcmV?d00001 diff --git a/app/static/icons/mstile-150x150.png b/app/static/icons/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..78c6e1edb30deb99deab5ea5f969eb5cceb4f1df GIT binary patch literal 5890 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

HdtR4At6`g`6DaJQh zB>%>U`I$=&dE1tz&?w>3x0=Xt<)GQH@uZ)!;qDK-+`*3{9gh}I_DY*gd~wWHqmfy$ z>scp_-pmu#u;t*iwZsP@J8Ioq$t)74C*T75FF`Mrh1<>FD;tu>{U8yApd->D$db{c znjSw*lew_pYa>3hz4%>Ab?XQHS$+n6u}Yv-gFhsVh-J}=egvX%x!tw&rONUl=XP%g z`iR6sa!oW)IlS8cG&|}UP^pYrj|H0g_uWAZ4sQb5f_(+DZXiY< zI8o1l?kUpPc)$6Y{`mFdPg&b;(4a<%JX;vZDw|npO_`KZIvU?%E<28$5qy9peohz> z5F4tjos@Y^eA~o>UA~J6NC{QWEa*t^oQCpqITvB56D9SLQR-Qbp(+I1GGY)J32^~1SOyH;dS3Mlv1# z0}d6GM3)UdsK$U}=;w5Q_i#6`n|KJNp8rf3u+2c@d87n+kJ|$9R8?E$i;`97e*u_2 B=AQrn literal 0 HcmV?d00001 diff --git a/app/static/icons/safari-pinned-tab.svg b/app/static/icons/safari-pinned-tab.svg new file mode 100644 index 0000000..ccb92a2 --- /dev/null +++ b/app/static/icons/safari-pinned-tab.svg @@ -0,0 +1,32 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + + diff --git a/app/static/js/pwa.js b/app/static/js/pwa.js new file mode 100644 index 0000000..54ad55d --- /dev/null +++ b/app/static/js/pwa.js @@ -0,0 +1,23 @@ +/** + * PWA (progressive web app) support + */ +function ready() { + // Make sure the browser supports service workers + if ("serviceWorker" in navigator) { + // Register a new service worker. + navigator.serviceWorker + .register("/static/js/sw.js") + .then((registration) => { + console.log( + "[PWA] Service worker registered with scope: ", + registration.scope + ); + }) + .catch((error) => { + console.error("[PWA] Service worker registration failed: ", error); + }); + } +} + +// Load on document load +document.addEventListener("DOMContentLoaded", ready); diff --git a/app/static/js/sw.js b/app/static/js/sw.js new file mode 100644 index 0000000..9a4fdab --- /dev/null +++ b/app/static/js/sw.js @@ -0,0 +1,13 @@ +// Service worker for PWA support + +// Install Hook +// Triggered when the PWA is installed by the browser. +self.addEventListener("install", () => { + console.log("[Service Worker] Installed"); +}); + +// Activate Hook +// Triggered when the PWA is activated by the browser. +self.addEventListener("activate", () => { + console.log("[Service Worker] Activated"); +}); diff --git a/app/static/manifest.json b/app/static/manifest.json new file mode 100644 index 0000000..3343e3c --- /dev/null +++ b/app/static/manifest.json @@ -0,0 +1,22 @@ +{ + "name": "Haldis", + "short_name": "Haldis", + "description": "Zeus WPI's drink ordering system", + "theme_color": "#ff6600", + "background_color": "#1c1c1c", + "display": "standalone", + "scope": "/", + "start_url": "/", + "icons": [ + { + "src": "/static/icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/static/icons/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} diff --git a/app/templates/layout.html b/app/templates/layout.html index 392963d..72b85b7 100644 --- a/app/templates/layout.html +++ b/app/templates/layout.html @@ -9,13 +9,15 @@ ('general_bp.about', 'About'), ('stats_blueprint.stats', 'Stats'), ] -%} + {% if current_user.is_admin() -%} {% set navbar = navbar + [('admin.index', 'Admin')] -%} {% endif -%} + {% set active_page = active_page|default('index') -%} {% block title %} -Haldis - {{ active_page|capitalize }} + Haldis - {{ active_page|capitalize }} {% if title %} - {{ title }} {% endif %} @@ -33,6 +35,26 @@ Haldis - {{ active_page|capitalize }} + +{% endblock %} + +{% block head %} + {{ super() }} + + + + + + + + + + + + + + + {% endblock %} {% block navbar %}