detached 973e682

inbox_templ.go RawHistoryFolder

1// Code generated by templ - DO NOT EDIT.
2
3// templ: version: v0.3.1020
4// SPDX-License-Identifier: AGPL-3.0-or-later
5
6package web
7
8//lint:file-ignore SA4006 This context is only used if a nested component is present.
9
10import "github.com/a-h/templ"
11import templruntime "github.com/a-h/templ/runtime"
12
13// Inbox is the owner's inbox: what is open across every repository. The
14// counters, the filter and the lists are fragments with an id that the live
15// stream replaces as a whole (ermiteLive.swap).
16func Inbox(l Layout, p InboxPage) templ.Component {
17	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
18		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
19		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
20			return templ_7745c5c3_CtxErr
21		}
22		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
23		if !templ_7745c5c3_IsBuffer {
24			defer func() {
25				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
26				if templ_7745c5c3_Err == nil {
27					templ_7745c5c3_Err = templ_7745c5c3_BufErr
28				}
29			}()
30		}
31		ctx = templ.InitializeContext(ctx)
32		templ_7745c5c3_Var1 := templ.GetChildren(ctx)
33		if templ_7745c5c3_Var1 == nil {
34			templ_7745c5c3_Var1 = templ.NopComponent
35		}
36		ctx = templ.ClearChildren(ctx)
37		templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
38			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
39			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
40			if !templ_7745c5c3_IsBuffer {
41				defer func() {
42					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
43					if templ_7745c5c3_Err == nil {
44						templ_7745c5c3_Err = templ_7745c5c3_BufErr
45					}
46				}()
47			}
48			ctx = templ.InitializeContext(ctx)
49			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<h1 class=\"sr\">Inbox</h1><div class=\"inbox\">")
50			if templ_7745c5c3_Err != nil {
51				return templ_7745c5c3_Err
52			}
53			templ_7745c5c3_Err = InboxCounters(p).Render(ctx, templ_7745c5c3_Buffer)
54			if templ_7745c5c3_Err != nil {
55				return templ_7745c5c3_Err
56			}
57			templ_7745c5c3_Err = InboxRepos(p).Render(ctx, templ_7745c5c3_Buffer)
58			if templ_7745c5c3_Err != nil {
59				return templ_7745c5c3_Err
60			}
61			templ_7745c5c3_Err = InboxPending(p).Render(ctx, templ_7745c5c3_Buffer)
62			if templ_7745c5c3_Err != nil {
63				return templ_7745c5c3_Err
64			}
65			templ_7745c5c3_Err = InboxMRs(p).Render(ctx, templ_7745c5c3_Buffer)
66			if templ_7745c5c3_Err != nil {
67				return templ_7745c5c3_Err
68			}
69			templ_7745c5c3_Err = InboxIssues(p).Render(ctx, templ_7745c5c3_Buffer)
70			if templ_7745c5c3_Err != nil {
71				return templ_7745c5c3_Err
72			}
73			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</div>")
74			if templ_7745c5c3_Err != nil {
75				return templ_7745c5c3_Err
76			}
77			return nil
78		})
79		templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer)
80		if templ_7745c5c3_Err != nil {
81			return templ_7745c5c3_Err
82		}
83		return nil
84	})
85}
86
87func InboxCounters(p InboxPage) templ.Component {
88	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
89		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
90		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
91			return templ_7745c5c3_CtxErr
92		}
93		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
94		if !templ_7745c5c3_IsBuffer {
95			defer func() {
96				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
97				if templ_7745c5c3_Err == nil {
98					templ_7745c5c3_Err = templ_7745c5c3_BufErr
99				}
100			}()
101		}
102		ctx = templ.InitializeContext(ctx)
103		templ_7745c5c3_Var3 := templ.GetChildren(ctx)
104		if templ_7745c5c3_Var3 == nil {
105			templ_7745c5c3_Var3 = templ.NopComponent
106		}
107		ctx = templ.ClearChildren(ctx)
108		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "<p id=\"inbox-counts\" class=\"inbox-counts\"><strong>")
109		if templ_7745c5c3_Err != nil {
110			return templ_7745c5c3_Err
111		}
112		var templ_7745c5c3_Var4 string
113		templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.MergeRequests))
114		if templ_7745c5c3_Err != nil {
115			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 23, Col: 33}
116		}
117		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
118		if templ_7745c5c3_Err != nil {
119			return templ_7745c5c3_Err
120		}
121		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "</strong> merge requests · <strong>")
122		if templ_7745c5c3_Err != nil {
123			return templ_7745c5c3_Err
124		}
125		var templ_7745c5c3_Var5 string
126		templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Issues))
127		if templ_7745c5c3_Err != nil {
128			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 23, Col: 87}
129		}
130		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
131		if templ_7745c5c3_Err != nil {
132			return templ_7745c5c3_Err
133		}
134		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "</strong> issues · <strong>")
135		if templ_7745c5c3_Err != nil {
136			return templ_7745c5c3_Err
137		}
138		var templ_7745c5c3_Var6 string
139		templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.PendingCount))
140		if templ_7745c5c3_Err != nil {
141			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 23, Col: 139}
142		}
143		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
144		if templ_7745c5c3_Err != nil {
145			return templ_7745c5c3_Err
146		}
147		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "</strong> awaiting moderation</p>")
148		if templ_7745c5c3_Err != nil {
149			return templ_7745c5c3_Err
150		}
151		return nil
152	})
153}
154
155func InboxRepos(p InboxPage) templ.Component {
156	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
157		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
158		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
159			return templ_7745c5c3_CtxErr
160		}
161		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
162		if !templ_7745c5c3_IsBuffer {
163			defer func() {
164				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
165				if templ_7745c5c3_Err == nil {
166					templ_7745c5c3_Err = templ_7745c5c3_BufErr
167				}
168			}()
169		}
170		ctx = templ.InitializeContext(ctx)
171		templ_7745c5c3_Var7 := templ.GetChildren(ctx)
172		if templ_7745c5c3_Var7 == nil {
173			templ_7745c5c3_Var7 = templ.NopComponent
174		}
175		ctx = templ.ClearChildren(ctx)
176		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "<nav id=\"inbox-repos\" class=\"since\" aria-label=\"Repository\">")
177		if templ_7745c5c3_Err != nil {
178			return templ_7745c5c3_Err
179		}
180		for _, r := range p.Repos {
181			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "<a href=\"")
182			if templ_7745c5c3_Err != nil {
183				return templ_7745c5c3_Err
184			}
185			var templ_7745c5c3_Var8 templ.SafeURL
186			templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
187			if templ_7745c5c3_Err != nil {
188				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 31, Col: 32}
189			}
190			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
191			if templ_7745c5c3_Err != nil {
192				return templ_7745c5c3_Err
193			}
194			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "\"")
195			if templ_7745c5c3_Err != nil {
196				return templ_7745c5c3_Err
197			}
198			if r.Current {
199				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, " aria-current=\"page\"")
200				if templ_7745c5c3_Err != nil {
201					return templ_7745c5c3_Err
202				}
203			}
204			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, ">")
205			if templ_7745c5c3_Err != nil {
206				return templ_7745c5c3_Err
207			}
208			var templ_7745c5c3_Var9 string
209			templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(r.Label)
210			if templ_7745c5c3_Err != nil {
211				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 35, Col: 13}
212			}
213			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
214			if templ_7745c5c3_Err != nil {
215				return templ_7745c5c3_Err
216			}
217			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "</a>")
218			if templ_7745c5c3_Err != nil {
219				return templ_7745c5c3_Err
220			}
221		}
222		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "</nav>")
223		if templ_7745c5c3_Err != nil {
224			return templ_7745c5c3_Err
225		}
226		return nil
227	})
228}
229
230// InboxPending is the issues awaiting moderation, first on the page. Their
231// texts come from anonymous visitors: they are shown as plain text, escaped,
232// never as Markdown.
233func InboxPending(p InboxPage) templ.Component {
234	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
235		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
236		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
237			return templ_7745c5c3_CtxErr
238		}
239		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
240		if !templ_7745c5c3_IsBuffer {
241			defer func() {
242				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
243				if templ_7745c5c3_Err == nil {
244					templ_7745c5c3_Err = templ_7745c5c3_BufErr
245				}
246			}()
247		}
248		ctx = templ.InitializeContext(ctx)
249		templ_7745c5c3_Var10 := templ.GetChildren(ctx)
250		if templ_7745c5c3_Var10 == nil {
251			templ_7745c5c3_Var10 = templ.NopComponent
252		}
253		ctx = templ.ClearChildren(ctx)
254		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "<section id=\"inbox-pending\" aria-labelledby=\"inbox-pending-h\"><h2 id=\"inbox-pending-h\" class=\"rule-h\"><span>Awaiting moderation</span><span class=\"count\">")
255		if templ_7745c5c3_Err != nil {
256			return templ_7745c5c3_Err
257		}
258		var templ_7745c5c3_Var11 string
259		templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.PendingCount))
260		if templ_7745c5c3_Err != nil {
261			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 45, Col: 116}
262		}
263		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
264		if templ_7745c5c3_Err != nil {
265			return templ_7745c5c3_Err
266		}
267		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "</span></h2>")
268		if templ_7745c5c3_Err != nil {
269			return templ_7745c5c3_Err
270		}
271		if len(p.Pending) > 0 {
272			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "<ul class=\"pending-list\">")
273			if templ_7745c5c3_Err != nil {
274				return templ_7745c5c3_Err
275			}
276			for _, m := range p.Pending {
277				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<li class=\"pending\"><div class=\"p-head\"><a href=\"")
278				if templ_7745c5c3_Err != nil {
279					return templ_7745c5c3_Err
280				}
281				var templ_7745c5c3_Var12 templ.SafeURL
282				templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(m.RepoHref))
283				if templ_7745c5c3_Err != nil {
284					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 51, Col: 42}
285				}
286				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
287				if templ_7745c5c3_Err != nil {
288					return templ_7745c5c3_Err
289				}
290				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "\">")
291				if templ_7745c5c3_Err != nil {
292					return templ_7745c5c3_Err
293				}
294				var templ_7745c5c3_Var13 string
295				templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(m.Repo)
296				if templ_7745c5c3_Err != nil {
297					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 51, Col: 53}
298				}
299				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
300				if templ_7745c5c3_Err != nil {
301					return templ_7745c5c3_Err
302				}
303				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</a> <span>")
304				if templ_7745c5c3_Err != nil {
305					return templ_7745c5c3_Err
306				}
307				var templ_7745c5c3_Var14 string
308				templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(m.Author)
309				if templ_7745c5c3_Err != nil {
310					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 52, Col: 23}
311				}
312				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
313				if templ_7745c5c3_Err != nil {
314					return templ_7745c5c3_Err
315				}
316				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "</span> ")
317				if templ_7745c5c3_Err != nil {
318					return templ_7745c5c3_Err
319				}
320				if m.WhenAt != "" {
321					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "<time datetime=\"")
322					if templ_7745c5c3_Err != nil {
323						return templ_7745c5c3_Err
324					}
325					var templ_7745c5c3_Var15 string
326					templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.ResolveAttributeValue(m.WhenAt)
327					if templ_7745c5c3_Err != nil {
328						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 54, Col: 33}
329					}
330					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var15)
331					if templ_7745c5c3_Err != nil {
332						return templ_7745c5c3_Err
333					}
334					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "\" title=\"")
335					if templ_7745c5c3_Err != nil {
336						return templ_7745c5c3_Err
337					}
338					var templ_7745c5c3_Var16 string
339					templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.ResolveAttributeValue(m.WhenAt)
340					if templ_7745c5c3_Err != nil {
341						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 54, Col: 52}
342					}
343					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var16)
344					if templ_7745c5c3_Err != nil {
345						return templ_7745c5c3_Err
346					}
347					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "\">")
348					if templ_7745c5c3_Err != nil {
349						return templ_7745c5c3_Err
350					}
351					var templ_7745c5c3_Var17 string
352					templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(m.When)
353					if templ_7745c5c3_Err != nil {
354						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 54, Col: 63}
355					}
356					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
357					if templ_7745c5c3_Err != nil {
358						return templ_7745c5c3_Err
359					}
360					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</time>")
361					if templ_7745c5c3_Err != nil {
362						return templ_7745c5c3_Err
363					}
364				}
365				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</div><p class=\"p-title\">")
366				if templ_7745c5c3_Err != nil {
367					return templ_7745c5c3_Err
368				}
369				var templ_7745c5c3_Var18 string
370				templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(m.Title)
371				if templ_7745c5c3_Err != nil {
372					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 57, Col: 34}
373				}
374				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
375				if templ_7745c5c3_Err != nil {
376					return templ_7745c5c3_Err
377				}
378				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "</p>")
379				if templ_7745c5c3_Err != nil {
380					return templ_7745c5c3_Err
381				}
382				if m.Preview != "" {
383					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "<p class=\"p-body\">")
384					if templ_7745c5c3_Err != nil {
385						return templ_7745c5c3_Err
386					}
387					var templ_7745c5c3_Var19 string
388					templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(m.Preview)
389					if templ_7745c5c3_Err != nil {
390						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 59, Col: 36}
391					}
392					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
393					if templ_7745c5c3_Err != nil {
394						return templ_7745c5c3_Err
395					}
396					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "</p>")
397					if templ_7745c5c3_Err != nil {
398						return templ_7745c5c3_Err
399					}
400				}
401				if m.Approve != "" {
402					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "<div class=\"p-btns\"><form method=\"post\" action=\"")
403					if templ_7745c5c3_Err != nil {
404						return templ_7745c5c3_Err
405					}
406					var templ_7745c5c3_Var20 templ.SafeURL
407					templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(m.Approve))
408					if templ_7745c5c3_Err != nil {
409						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 63, Col: 61}
410					}
411					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
412					if templ_7745c5c3_Err != nil {
413						return templ_7745c5c3_Err
414					}
415					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "\"><button type=\"submit\" class=\"btn primary\">Approve</button></form><form method=\"post\" action=\"")
416					if templ_7745c5c3_Err != nil {
417						return templ_7745c5c3_Err
418					}
419					var templ_7745c5c3_Var21 templ.SafeURL
420					templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(m.Reject))
421					if templ_7745c5c3_Err != nil {
422						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 64, Col: 60}
423					}
424					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
425					if templ_7745c5c3_Err != nil {
426						return templ_7745c5c3_Err
427					}
428					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "\"><button type=\"submit\" class=\"btn\">Reject</button></form><form method=\"post\" action=\"")
429					if templ_7745c5c3_Err != nil {
430						return templ_7745c5c3_Err
431					}
432					var templ_7745c5c3_Var22 templ.SafeURL
433					templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(m.Ban))
434					if templ_7745c5c3_Err != nil {
435						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 65, Col: 57}
436					}
437					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22))
438					if templ_7745c5c3_Err != nil {
439						return templ_7745c5c3_Err
440					}
441					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "\"><button type=\"submit\" class=\"btn danger\">Reject and ban</button></form></div>")
442					if templ_7745c5c3_Err != nil {
443						return templ_7745c5c3_Err
444					}
445				}
446				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "</li>")
447				if templ_7745c5c3_Err != nil {
448					return templ_7745c5c3_Err
449				}
450			}
451			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</ul>")
452			if templ_7745c5c3_Err != nil {
453				return templ_7745c5c3_Err
454			}
455		} else {
456			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "<p class=\"lede dim\">nothing awaits moderation.</p>")
457			if templ_7745c5c3_Err != nil {
458				return templ_7745c5c3_Err
459			}
460		}
461		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</section>")
462		if templ_7745c5c3_Err != nil {
463			return templ_7745c5c3_Err
464		}
465		return nil
466	})
467}
468
469func InboxMRs(p InboxPage) templ.Component {
470	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
471		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
472		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
473			return templ_7745c5c3_CtxErr
474		}
475		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
476		if !templ_7745c5c3_IsBuffer {
477			defer func() {
478				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
479				if templ_7745c5c3_Err == nil {
480					templ_7745c5c3_Err = templ_7745c5c3_BufErr
481				}
482			}()
483		}
484		ctx = templ.InitializeContext(ctx)
485		templ_7745c5c3_Var23 := templ.GetChildren(ctx)
486		if templ_7745c5c3_Var23 == nil {
487			templ_7745c5c3_Var23 = templ.NopComponent
488		}
489		ctx = templ.ClearChildren(ctx)
490		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "<section id=\"inbox-mrs\" aria-labelledby=\"inbox-mrs-h\"><h2 id=\"inbox-mrs-h\" class=\"rule-h\"><span>Open merge requests</span><span class=\"count\">")
491		if templ_7745c5c3_Err != nil {
492			return templ_7745c5c3_Err
493		}
494		var templ_7745c5c3_Var24 string
495		templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.MRs)))
496		if templ_7745c5c3_Err != nil {
497			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 79, Col: 108}
498		}
499		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24))
500		if templ_7745c5c3_Err != nil {
501			return templ_7745c5c3_Err
502		}
503		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</span></h2>")
504		if templ_7745c5c3_Err != nil {
505			return templ_7745c5c3_Err
506		}
507		templ_7745c5c3_Err = inboxRows(p.MRs, "Open merge requests").Render(ctx, templ_7745c5c3_Buffer)
508		if templ_7745c5c3_Err != nil {
509			return templ_7745c5c3_Err
510		}
511		if len(p.MRs) == 0 {
512			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "<p class=\"lede dim\">no open merge requests.</p>")
513			if templ_7745c5c3_Err != nil {
514				return templ_7745c5c3_Err
515			}
516		}
517		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</section>")
518		if templ_7745c5c3_Err != nil {
519			return templ_7745c5c3_Err
520		}
521		return nil
522	})
523}
524
525func InboxIssues(p InboxPage) templ.Component {
526	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
527		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
528		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
529			return templ_7745c5c3_CtxErr
530		}
531		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
532		if !templ_7745c5c3_IsBuffer {
533			defer func() {
534				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
535				if templ_7745c5c3_Err == nil {
536					templ_7745c5c3_Err = templ_7745c5c3_BufErr
537				}
538			}()
539		}
540		ctx = templ.InitializeContext(ctx)
541		templ_7745c5c3_Var25 := templ.GetChildren(ctx)
542		if templ_7745c5c3_Var25 == nil {
543			templ_7745c5c3_Var25 = templ.NopComponent
544		}
545		ctx = templ.ClearChildren(ctx)
546		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "<section id=\"inbox-issues\" aria-labelledby=\"inbox-issues-h\"><h2 id=\"inbox-issues-h\" class=\"rule-h\"><span>Open issues</span><span class=\"count\">")
547		if templ_7745c5c3_Err != nil {
548			return templ_7745c5c3_Err
549		}
550		var templ_7745c5c3_Var26 string
551		templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.IssueRows)))
552		if templ_7745c5c3_Err != nil {
553			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 89, Col: 109}
554		}
555		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26))
556		if templ_7745c5c3_Err != nil {
557			return templ_7745c5c3_Err
558		}
559		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "</span></h2>")
560		if templ_7745c5c3_Err != nil {
561			return templ_7745c5c3_Err
562		}
563		templ_7745c5c3_Err = inboxRows(p.IssueRows, "Open issues").Render(ctx, templ_7745c5c3_Buffer)
564		if templ_7745c5c3_Err != nil {
565			return templ_7745c5c3_Err
566		}
567		if len(p.IssueRows) == 0 {
568			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "<p class=\"lede dim\">no open issues.</p>")
569			if templ_7745c5c3_Err != nil {
570				return templ_7745c5c3_Err
571			}
572		}
573		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</section>")
574		if templ_7745c5c3_Err != nil {
575			return templ_7745c5c3_Err
576		}
577		return nil
578	})
579}
580
581func inboxRows(rows []InboxRow, label string) templ.Component {
582	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
583		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
584		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
585			return templ_7745c5c3_CtxErr
586		}
587		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
588		if !templ_7745c5c3_IsBuffer {
589			defer func() {
590				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
591				if templ_7745c5c3_Err == nil {
592					templ_7745c5c3_Err = templ_7745c5c3_BufErr
593				}
594			}()
595		}
596		ctx = templ.InitializeContext(ctx)
597		templ_7745c5c3_Var27 := templ.GetChildren(ctx)
598		if templ_7745c5c3_Var27 == nil {
599			templ_7745c5c3_Var27 = templ.NopComponent
600		}
601		ctx = templ.ClearChildren(ctx)
602		if len(rows) > 0 {
603			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "<table class=\"list mrs\" aria-label=\"")
604			if templ_7745c5c3_Err != nil {
605				return templ_7745c5c3_Err
606			}
607			var templ_7745c5c3_Var28 string
608			templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.ResolveAttributeValue(label)
609			if templ_7745c5c3_Err != nil {
610				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 99, Col: 44}
611			}
612			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var28)
613			if templ_7745c5c3_Err != nil {
614				return templ_7745c5c3_Err
615			}
616			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "\"><tbody data-rows>")
617			if templ_7745c5c3_Err != nil {
618				return templ_7745c5c3_Err
619			}
620			for _, m := range rows {
621				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "<tr")
622				if templ_7745c5c3_Err != nil {
623					return templ_7745c5c3_Err
624				}
625				if m.Cursor {
626					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, " data-cursor")
627					if templ_7745c5c3_Err != nil {
628						return templ_7745c5c3_Err
629					}
630				}
631				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, " data-state=\"open\"><td class=\"c-n mute\">")
632				if templ_7745c5c3_Err != nil {
633					return templ_7745c5c3_Err
634				}
635				var templ_7745c5c3_Var29 string
636				templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(m.Number)
637				if templ_7745c5c3_Err != nil {
638					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 103, Col: 37}
639				}
640				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29))
641				if templ_7745c5c3_Err != nil {
642					return templ_7745c5c3_Err
643				}
644				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</td><td class=\"c-subject\"><a href=\"")
645				if templ_7745c5c3_Err != nil {
646					return templ_7745c5c3_Err
647				}
648				var templ_7745c5c3_Var30 templ.SafeURL
649				templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(m.Href))
650				if templ_7745c5c3_Err != nil {
651					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 104, Col: 59}
652				}
653				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30))
654				if templ_7745c5c3_Err != nil {
655					return templ_7745c5c3_Err
656				}
657				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "\">")
658				if templ_7745c5c3_Err != nil {
659					return templ_7745c5c3_Err
660				}
661				var templ_7745c5c3_Var31 string
662				templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(m.Title)
663				if templ_7745c5c3_Err != nil {
664					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 104, Col: 71}
665				}
666				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
667				if templ_7745c5c3_Err != nil {
668					return templ_7745c5c3_Err
669				}
670				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "</a> <a class=\"mute\" href=\"")
671				if templ_7745c5c3_Err != nil {
672					return templ_7745c5c3_Err
673				}
674				var templ_7745c5c3_Var32 templ.SafeURL
675				templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(m.RepoHref))
676				if templ_7745c5c3_Err != nil {
677					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 104, Col: 126}
678				}
679				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
680				if templ_7745c5c3_Err != nil {
681					return templ_7745c5c3_Err
682				}
683				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "\">")
684				if templ_7745c5c3_Err != nil {
685					return templ_7745c5c3_Err
686				}
687				var templ_7745c5c3_Var33 string
688				templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(m.Repo)
689				if templ_7745c5c3_Err != nil {
690					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 104, Col: 137}
691				}
692				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
693				if templ_7745c5c3_Err != nil {
694					return templ_7745c5c3_Err
695				}
696				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "</a></td><td class=\"c-when nowrap dim\">")
697				if templ_7745c5c3_Err != nil {
698					return templ_7745c5c3_Err
699				}
700				if m.WhenAt != "" {
701					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "<time datetime=\"")
702					if templ_7745c5c3_Err != nil {
703						return templ_7745c5c3_Err
704					}
705					var templ_7745c5c3_Var34 string
706					templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.ResolveAttributeValue(m.WhenAt)
707					if templ_7745c5c3_Err != nil {
708						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 107, Col: 33}
709					}
710					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var34)
711					if templ_7745c5c3_Err != nil {
712						return templ_7745c5c3_Err
713					}
714					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "\" title=\"")
715					if templ_7745c5c3_Err != nil {
716						return templ_7745c5c3_Err
717					}
718					var templ_7745c5c3_Var35 string
719					templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.ResolveAttributeValue(m.WhenAt)
720					if templ_7745c5c3_Err != nil {
721						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 107, Col: 52}
722					}
723					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var35)
724					if templ_7745c5c3_Err != nil {
725						return templ_7745c5c3_Err
726					}
727					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "\">")
728					if templ_7745c5c3_Err != nil {
729						return templ_7745c5c3_Err
730					}
731					var templ_7745c5c3_Var36 string
732					templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs(m.When)
733					if templ_7745c5c3_Err != nil {
734						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/inbox.templ`, Line: 107, Col: 63}
735					}
736					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36))
737					if templ_7745c5c3_Err != nil {
738						return templ_7745c5c3_Err
739					}
740					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "</time>")
741					if templ_7745c5c3_Err != nil {
742						return templ_7745c5c3_Err
743					}
744				}
745				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "</td></tr>")
746				if templ_7745c5c3_Err != nil {
747					return templ_7745c5c3_Err
748				}
749			}
750			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "</tbody></table>")
751			if templ_7745c5c3_Err != nil {
752				return templ_7745c5c3_Err
753			}
754		}
755		return nil
756	})
757}
758
759var _ = templruntime.GeneratedTemplate

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 2

Tags 45

↑↓ moveenter openesc close