A vibe coded tangled fork which supports pijul.
1package discussions
2
3import (
4 "net/http"
5
6 "github.com/go-chi/chi/v5"
7 "tangled.org/core/appview/middleware"
8)
9
10func (d *Discussions) Router(mw *middleware.Middleware) http.Handler {
11 r := chi.NewRouter()
12
13 r.Route("/", func(r chi.Router) {
14 r.With(middleware.Paginate).Get("/", d.RepoDiscussionsList)
15
16 // Authenticated routes for creating discussions
17 r.Group(func(r chi.Router) {
18 r.Use(middleware.AuthMiddleware(d.oauth))
19 r.Get("/new", d.NewDiscussion)
20 r.Post("/new", d.NewDiscussion)
21 })
22
23 // Single discussion routes
24 r.Route("/{discussion}", func(r chi.Router) {
25 r.Use(mw.ResolveDiscussion)
26 r.Get("/", d.RepoSingleDiscussion)
27
28 // Authenticated routes
29 r.Group(func(r chi.Router) {
30 r.Use(middleware.AuthMiddleware(d.oauth))
31
32 // Comments
33 r.Post("/comment", d.NewComment)
34
35 // Patches - anyone authenticated can add patches
36 r.Post("/patches", d.AddPatch)
37
38 // Patch management
39 r.Route("/patches/{patchId}", func(r chi.Router) {
40 r.Delete("/", d.RemovePatch)
41 r.Post("/readd", d.ReaddPatch)
42 })
43
44 // Discussion state changes
45 r.Post("/close", d.CloseDiscussion)
46 r.Post("/reopen", d.ReopenDiscussion)
47 r.Post("/merge", d.MergeDiscussion)
48 })
49 })
50 })
51
52 return r
53}