20ff28b2fb45217fcf2b30d41f2e2101c82ee15b
- Author
- TheEdgeOfRage <git@theedgeofrage.com>
- Committer
- TheEdgeOfRage <git@theedgeofrage.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/assets/index.js b/assets/index.js
2index a81869b6ee8d3aa66e8cf48e8432e578eebf5ad9..c62e9896555855b717a39aa1fe7ee2f1f0de6099 100644
3--- a/assets/index.js
4+++ b/assets/index.js
5@@ -65,3 +65,11 @@ function subscribeHandler(event) {
6 field.reportValidity();
7 }
8 }
9+
10+if ("serviceWorker" in navigator) {
11+ navigator.serviceWorker.register("/assets/sw.js").then((registration) => {
12+ console.log("Service Worker registered with scope:", registration.scope);
13+ }).catch((error) => {
14+ console.log("Service Worker registration failed:", error);
15+ });
16+}
17diff --git a/assets/manifest.json b/assets/manifest.json
18new file mode 100644
19index 0000000000000000000000000000000000000000..632b15acccf4cd6b80950415765afaedb4ec8271
20--- /dev/null
21+++ b/assets/manifest.json
22@@ -0,0 +1,18 @@
23+{
24+ "name": "Ytrssil",
25+ "short_name": "Ytrssil",
26+ "description": "YouTube RSS subscription feed app",
27+ "start_url": "/",
28+ "display": "standalone",
29+ "background_color": "#212529",
30+ "theme_color": "#212529",
31+ "orientation": "portrait-primary",
32+ "icons": [
33+ {
34+ "src": "/assets/ytrssil-512.png",
35+ "sizes": "512x512",
36+ "type": "image/png",
37+ "purpose": "any maskable"
38+ }
39+ ]
40+}
41diff --git a/assets/sw.js b/assets/sw.js
42new file mode 100644
43index 0000000000000000000000000000000000000000..4b146105d75ecef93dc068b6a5f9816adf1a4ff4
44--- /dev/null
45+++ b/assets/sw.js
46@@ -0,0 +1,44 @@
47+const CACHE_NAME = 'ytrssil-v1';
48+const ASSETS_TO_CACHE = [
49+ '/',
50+ '/assets/vendor/bootstrap.min.css',
51+ '/assets/vendor/bootstrap-icons.min.css',
52+ '/assets/vendor/bootstrap.bundle.min.js',
53+ '/assets/vendor/htmx.min.js',
54+ '/assets/vendor/fuse.js',
55+ '/assets/index.js',
56+ '/assets/ytrssil.png',
57+ '/assets/manifest.json'
58+];
59+
60+self.addEventListener('install', (event) => {
61+ event.waitUntil(
62+ caches.open(CACHE_NAME).then((cache) => {
63+ return cache.addAll(ASSETS_TO_CACHE);
64+ })
65+ );
66+ self.skipWaiting();
67+});
68+
69+self.addEventListener('activate', (event) => {
70+ event.waitUntil(
71+ caches.keys().then((cacheNames) => {
72+ return Promise.all(
73+ cacheNames.map((cacheName) => {
74+ if (cacheName !== CACHE_NAME) {
75+ return caches.delete(cacheName);
76+ }
77+ })
78+ );
79+ })
80+ );
81+ self.clients.claim();
82+});
83+
84+self.addEventListener('fetch', (event) => {
85+ event.respondWith(
86+ caches.match(event.request).then((response) => {
87+ return response || fetch(event.request);
88+ })
89+ );
90+});
91diff --git a/assets/ytrssil.png b/assets/ytrssil.png
92index 335bf88afd70537e1c5d29ce1fe58f0022fde862..ad5ab3238555a4395cbf2fbe8e25ea2da2e15936 100644
93Binary files a/assets/ytrssil.png and b/assets/ytrssil.png differ
94diff --git a/pages/main.templ b/pages/main.templ
95index 0a8cbf681b52a466dbffaec2038ecb4255e9a041..5e6066c1607c3cf9ebc17842664cad3bf5734fff 100644
96--- a/pages/main.templ
97+++ b/pages/main.templ
98@@ -7,7 +7,11 @@ templ BaseLayout(title string) {
99 <title>{ title }</title>
100 <meta charset="utf-8"/>
101 <meta name="viewport" content="width=device-width, initial-scale=1"/>
102+ <meta name="description" content="YouTube RSS subscription feed app"/>
103+ <meta name="theme-color" content="#212529"/>
104 <link rel="icon" type="image/png" href="/assets/ytrssil.png"/>
105+ <link rel="apple-touch-icon" href="/assets/ytrssil.png"/>
106+ <link rel="manifest" href="/assets/manifest.json"/>
107 <link rel="stylesheet" href="/assets/vendor/bootstrap.min.css"/>
108 <link rel="stylesheet" href="/assets/vendor/bootstrap-icons.min.css"/>
109 <style>
110diff --git a/pages/main_templ.go b/pages/main_templ.go
111index 2afb136a3f297e06a262f6425d6cd796c3186e6f..8b39fb0635b20110ef1d3891e48979d272f6f8c7 100644
112--- a/pages/main_templ.go
113+++ b/pages/main_templ.go
114@@ -42,7 +42,7 @@ func BaseLayout(title string) templ.Component {
115 if templ_7745c5c3_Err != nil {
116 return templ_7745c5c3_Err
117 }