dbf9aafd74881c6259b3298a72b70688e8a657bb
- 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 8f05be9338901a0a79940cce406fa2f36946d3bd..3c7cfd1df876be6ff0cbc2ff70d386245abb2ac4 100644
3--- a/assets/index.js
4+++ b/assets/index.js
5@@ -1,4 +1,14 @@
6 document.addEventListener("DOMContentLoaded", function () {
7+ if (navigator.standalone === true) {
8+ document.addEventListener("click", function (event) {
9+ const link = event.target.closest("a[data-open-in-safari]");
10+ if (!link) return;
11+
12+ event.preventDefault();
13+ window.location.href = `x-safari-${link.href}`;
14+ });
15+ }
16+
17 const addVideoModal = document.getElementById("add-video-modal");
18 if (addVideoModal) {
19 addVideoModal.addEventListener("shown.bs.modal", function () {
20diff --git a/pages/channels.templ b/pages/channels.templ
21index b1e47ec8efae72a02ce22efe5b0216f45e63f034..2f293d87665c9123b5b96e955de662320414e7f1 100644
22--- a/pages/channels.templ
23+++ b/pages/channels.templ
24@@ -83,6 +83,8 @@ templ ChannelCard(channel models.Channel) {
25 <a
26 href={ templ.SafeURL(fmt.Sprintf("https://www.youtube.com/channel/%s", channel.ID)) }
27 target="_blank"
28+ rel="noopener"
29+ data-open-in-safari
30 class="link-light link-underline-opacity-0"
31 >
32 { channel.Name }
33diff --git a/pages/channels_templ.go b/pages/channels_templ.go
34index 4f3f6357eb735ccd4d2905b2470693b2b50116c0..a1316ebf152cc8ef515e183b4c7eca4955c8444e 100644
35--- a/pages/channels_templ.go
36+++ b/pages/channels_templ.go
37@@ -247,14 +247,14 @@ func ChannelCard(channel models.Channel) templ.Component {
38 if templ_7745c5c3_Err != nil {
39 return templ_7745c5c3_Err
40 }
41- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "\" target=\"_blank\" class=\"link-light link-underline-opacity-0\">")
42+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "\" target=\"_blank\" rel=\"noopener\" data-open-in-safari class=\"link-light link-underline-opacity-0\">")
43 if templ_7745c5c3_Err != nil {
44 return templ_7745c5c3_Err
45 }
46 var templ_7745c5c3_Var14 string
47 templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(channel.Name)
48 if templ_7745c5c3_Err != nil {
49- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/channels.templ`, Line: 88, Col: 21}
50+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/channels.templ`, Line: 90, Col: 21}
51 }
52 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
53 if templ_7745c5c3_Err != nil {
54@@ -267,7 +267,7 @@ func ChannelCard(channel models.Channel) templ.Component {
55 var templ_7745c5c3_Var15 string
56 templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", channel.UnwatchedCount))
57 if templ_7745c5c3_Err != nil {
58- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/channels.templ`, Line: 92, Col: 49}
59+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/channels.templ`, Line: 94, Col: 49}
60 }
61 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
62 if templ_7745c5c3_Err != nil {
63@@ -288,7 +288,7 @@ func ChannelCard(channel models.Channel) templ.Component {
64 var templ_7745c5c3_Var16 string
65 templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("#unsubscribe-modal-%s", channel.ID))
66 if templ_7745c5c3_Err != nil {
67- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/channels.templ`, Line: 100, Col: 71}
68+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/channels.templ`, Line: 102, Col: 71}
69 }
70 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var16)
71 if templ_7745c5c3_Err != nil {
72diff --git a/pages/new_videos.templ b/pages/new_videos.templ
73index 1984d007575ad7e6c8b428ea89e56403b80a6d47..0e4449bfc70a5aeee2c2de6ef2e711871e54889a 100644
74--- a/pages/new_videos.templ
75+++ b/pages/new_videos.templ
76@@ -18,7 +18,9 @@ templ ProgressBar(video models.Video) {
77
78 templ thumbnail(video models.Video) {
79 <a
80- target="blank"
81+ target="_blank"
82+ rel="noopener"
83+ data-open-in-safari
84 href={ templ.SafeURL(video.WatchURL()) }
85 style="display: block; overflow: hidden; position: relative"
86 if video.IsShort {
87@@ -78,7 +80,9 @@ templ VideoCard(video models.Video) {
88 <p class="card-title text-truncate mb-0">{ video.Title }</p>
89 <p class="d-flex justify-content-between">
90 <a
91- target="blank"
92+ target="_blank"
93+ rel="noopener"
94+ data-open-in-safari
95 href={ fmt.Sprintf("https://www.youtube.com/channel/%s", video.ChannelID) }
96 class="card-text fw-light link-light link-underline-opacity-0"
97 >{ video.ChannelName }</a>
98@@ -99,6 +103,7 @@ templ VideoCard(video models.Video) {
99 if video.IsDownloaded() {
100 <a
101 href={ templ.SafeURL(fmt.Sprintf("/videos/%s/file", video.ID)) }
102+ data-open-in-safari
103 class="btn btn-success"
104 >
105 <i class="bi bi-download"></i>
106diff --git a/pages/new_videos_templ.go b/pages/new_videos_templ.go
107index ba34ace8b0108f676c0b6ea08f4e0f8395317e29..5a025447271d393c9d91165a1e669df56dd37024 100644
108--- a/pages/new_videos_templ.go
109+++ b/pages/new_videos_templ.go
110@@ -110,14 +110,14 @@ func thumbnail(video models.Video) templ.Component {
111 templ_7745c5c3_Var5 = templ.NopComponent
112 }
113 ctx = templ.ClearChildren(ctx)
114- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<a target=\"blank\" href=\"")
115+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<a target=\"_blank\" rel=\"noopener\" data-open-in-safari href=\"")
116 if templ_7745c5c3_Err != nil {
117 return templ_7745c5c3_Err
118 }
119 var templ_7745c5c3_Var6 templ.SafeURL
120 templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(video.WatchURL()))
121 if templ_7745c5c3_Err != nil {
122- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 22, Col: 40}
123+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 24, Col: 40}
124 }
125 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
126 if templ_7745c5c3_Err != nil {
127@@ -145,7 +145,7 @@ func thumbnail(video models.Video) templ.Component {
128 var templ_7745c5c3_Var7 string
129 templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("https://img.youtube.com/vi/%s/0.jpg", video.ID))
130 if templ_7745c5c3_Err != nil {
131- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 30, Col: 70}
132+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 32, Col: 70}
133 }
134 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var7)
135 if templ_7745c5c3_Err != nil {
136@@ -158,7 +158,7 @@ func thumbnail(video models.Video) templ.Component {
137 var templ_7745c5c3_Var8 string
138 templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.Title)
139 if templ_7745c5c3_Err != nil {
140- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 32, Col: 21}
141+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 34, Col: 21}
142 }
143 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var8)
144 if templ_7745c5c3_Err != nil {
145@@ -176,7 +176,7 @@ func thumbnail(video models.Video) templ.Component {
146 var templ_7745c5c3_Var9 string
147 templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("https://img.youtube.com/vi/%s/0.jpg", video.ID))
148 if templ_7745c5c3_Err != nil {
149- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 46, Col: 70}
150+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 48, Col: 70}
151 }
152 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var9)
153 if templ_7745c5c3_Err != nil {
154@@ -189,7 +189,7 @@ func thumbnail(video models.Video) templ.Component {
155 var templ_7745c5c3_Var10 string
156 templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.Title)
157 if templ_7745c5c3_Err != nil {
158- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 48, Col: 21}
159+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 50, Col: 21}
160 }
161 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var10)
162 if templ_7745c5c3_Err != nil {
163@@ -213,7 +213,7 @@ func thumbnail(video models.Video) templ.Component {
164 var templ_7745c5c3_Var11 string
165 templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(video.Duration())
166 if templ_7745c5c3_Err != nil {
167- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 66, Col: 22}
168+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 68, Col: 22}
169 }
170 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
171 if templ_7745c5c3_Err != nil {
172@@ -264,7 +264,7 @@ func VideoCard(video models.Video) templ.Component {
173 var templ_7745c5c3_Var13 string
174 templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("video-card-%s", video.ID))
175 if templ_7745c5c3_Err != nil {
176- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 74, Col: 49}
177+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 76, Col: 49}
178 }
179 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var13)
180 if templ_7745c5c3_Err != nil {
181@@ -277,7 +277,7 @@ func VideoCard(video models.Video) templ.Component {
182 var templ_7745c5c3_Var14 string
183 templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.Title)
184 if templ_7745c5c3_Err != nil {
185- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 74, Col: 108}
186+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 76, Col: 108}
187 }
188 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var14)
189 if templ_7745c5c3_Err != nil {
190@@ -290,7 +290,7 @@ func VideoCard(video models.Video) templ.Component {
191 var templ_7745c5c3_Var15 string
192 templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.ChannelName)
193 if templ_7745c5c3_Err != nil {
194- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 74, Col: 148}
195+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 76, Col: 148}
196 }
197 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var15)
198 if templ_7745c5c3_Err != nil {
199@@ -311,20 +311,20 @@ func VideoCard(video models.Video) templ.Component {
200 var templ_7745c5c3_Var16 string
201 templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(video.Title)
202 if templ_7745c5c3_Err != nil {
203- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 78, Col: 58}
204+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 80, Col: 58}
205 }
206 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
207 if templ_7745c5c3_Err != nil {
208 return templ_7745c5c3_Err
209 }
210diff --git a/pages/watched_videos.templ b/pages/watched_videos.templ
211index 96897fbd1426980d3de5532e42506c0d73b34f90..ae5ffc7cdffcf9c7ca7ba95f4b5a2409a79c3cfa 100644
212--- a/pages/watched_videos.templ
213+++ b/pages/watched_videos.templ
214@@ -13,7 +13,9 @@ templ watchedVideoCard(video models.Video) {
215 <p class="card-title text-truncate mb-0">{ video.Title }</p>
216 <p class="d-flex justify-content-between">
217 <a
218- target="blank"
219+ target="_blank"
220+ rel="noopener"
221+ data-open-in-safari
222 href={ fmt.Sprintf("https://www.youtube.com/channel/%s", video.ChannelID) }
223 class="card-text fw-light link-light link-underline-opacity-0"
224 >{ video.ChannelName }</a>
225diff --git a/pages/watched_videos_templ.go b/pages/watched_videos_templ.go
226index fd224cf21fe66be0b42770df78e841476a8525d1..c4cdb168ffe3315015d4265b09bf5052e17d4750 100644
227--- a/pages/watched_videos_templ.go
228+++ b/pages/watched_videos_templ.go
229@@ -56,14 +56,14 @@ func watchedVideoCard(video models.Video) templ.Component {
230 if templ_7745c5c3_Err != nil {
231 return templ_7745c5c3_Err
232 }
233- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "</p><p class=\"d-flex justify-content-between\"><a target=\"blank\" href=\"")
234+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "</p><p class=\"d-flex justify-content-between\"><a target=\"_blank\" rel=\"noopener\" data-open-in-safari href=\"")
235 if templ_7745c5c3_Err != nil {
236 return templ_7745c5c3_Err
237 }
238 var templ_7745c5c3_Var3 templ.SafeURL
239 templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinURLErrs(fmt.Sprintf("https://www.youtube.com/channel/%s", video.ChannelID))
240 if templ_7745c5c3_Err != nil {
241- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 17, Col: 78}
242+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 19, Col: 78}
243 }
244 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
245 if templ_7745c5c3_Err != nil {
246@@ -76,7 +76,7 @@ func watchedVideoCard(video models.Video) templ.Component {
247 var templ_7745c5c3_Var4 string
248 templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(video.ChannelName)
249 if templ_7745c5c3_Err != nil {
250- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 19, Col: 24}
251+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 21, Col: 24}
252 }
253 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
254 if templ_7745c5c3_Err != nil {
255@@ -89,7 +89,7 @@ func watchedVideoCard(video models.Video) templ.Component {
256 var templ_7745c5c3_Var5 string
257 templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(video.HumanizedPublishTime())
258 if templ_7745c5c3_Err != nil {
259- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 21, Col: 35}
260+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 23, Col: 35}
261 }
262 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
263 if templ_7745c5c3_Err != nil {
264@@ -102,7 +102,7 @@ func watchedVideoCard(video models.Video) templ.Component {
265 var templ_7745c5c3_Var6 string
266 templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("@patch('/videos/%s/unwatch')", video.ID))
267 if templ_7745c5c3_Err != nil {
268- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 26, Col: 74}
269+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 28, Col: 74}
270 }
271 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var6)
272 if templ_7745c5c3_Err != nil {
273@@ -161,7 +161,7 @@ func WatchedVideosPage(videos []models.Video, currentPage int) templ.Component {
274 var templ_7745c5c3_Var9 string
275 templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("video-card-%s", video.ID))
276 if templ_7745c5c3_Err != nil {
277- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 40, Col: 52}
278+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 42, Col: 52}
279 }
280 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var9)
281 if templ_7745c5c3_Err != nil {
282@@ -174,7 +174,7 @@ func WatchedVideosPage(videos []models.Video, currentPage int) templ.Component {
283 var templ_7745c5c3_Var10 string
284 templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.Title)
285 if templ_7745c5c3_Err != nil {
286- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 40, Col: 111}
287+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 42, Col: 111}
288 }
289 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var10)
290 if templ_7745c5c3_Err != nil {
291@@ -187,7 +187,7 @@ func WatchedVideosPage(videos []models.Video, currentPage int) templ.Component {
292 var templ_7745c5c3_Var11 string
293 templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.ChannelName)
294 if templ_7745c5c3_Err != nil {
295- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 40, Col: 151}
296+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 42, Col: 151}
297 }
298 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var11)
299 if templ_7745c5c3_Err != nil {
300@@ -218,7 +218,7 @@ func WatchedVideosPage(videos []models.Video, currentPage int) templ.Component {
301 var templ_7745c5c3_Var12 templ.SafeURL
302 templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(fmt.Sprintf("/watched?page=%d", currentPage-1)))
303 if templ_7745c5c3_Err != nil {
304- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 48, Col: 76}
305+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 50, Col: 76}
306 }
307 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
308 if templ_7745c5c3_Err != nil {
309@@ -241,7 +241,7 @@ func WatchedVideosPage(videos []models.Video, currentPage int) templ.Component {
310 var templ_7745c5c3_Var13 string
311 templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", currentPage))
312 if templ_7745c5c3_Err != nil {
313- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 56, Col: 66}
314+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 58, Col: 66}
315 }
316 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
317 if templ_7745c5c3_Err != nil {
318@@ -259,7 +259,7 @@ func WatchedVideosPage(videos []models.Video, currentPage int) templ.Component {
319 var templ_7745c5c3_Var14 templ.SafeURL
320 templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(fmt.Sprintf("/watched?page=%d", currentPage+1)))
321 if templ_7745c5c3_Err != nil {
322- return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 58, Col: 76}
323+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 60, Col: 76}
324 }
325 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
326 if templ_7745c5c3_Err != nil {