+12
-12
appview/issues/issues.go
+12
-12
appview/issues/issues.go
···
83
83
issue, ok := r.Context().Value("issue").(*models.Issue)
84
84
if !ok {
85
85
l.Error("failed to get issue")
86
-
rp.pages.Error404(w)
86
+
rp.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: user})
87
87
return
88
88
}
89
89
···
104
104
)
105
105
if err != nil {
106
106
l.Error("failed to fetch labels", "err", err)
107
-
rp.pages.Error503(w)
107
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
108
108
return
109
109
}
110
110
···
137
137
issue, ok := r.Context().Value("issue").(*models.Issue)
138
138
if !ok {
139
139
l.Error("failed to get issue")
140
-
rp.pages.Error404(w)
140
+
rp.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: user})
141
141
return
142
142
}
143
143
···
282
282
issue, ok := r.Context().Value("issue").(*models.Issue)
283
283
if !ok {
284
284
l.Error("failed to get issue")
285
-
rp.pages.Error404(w)
285
+
rp.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: user})
286
286
return
287
287
}
288
288
···
333
333
issue, ok := r.Context().Value("issue").(*models.Issue)
334
334
if !ok {
335
335
l.Error("failed to get issue")
336
-
rp.pages.Error404(w)
336
+
rp.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: user})
337
337
return
338
338
}
339
339
···
383
383
issue, ok := r.Context().Value("issue").(*models.Issue)
384
384
if !ok {
385
385
l.Error("failed to get issue")
386
-
rp.pages.Error404(w)
386
+
rp.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: user})
387
387
return
388
388
}
389
389
···
481
481
issue, ok := r.Context().Value("issue").(*models.Issue)
482
482
if !ok {
483
483
l.Error("failed to get issue")
484
-
rp.pages.Error404(w)
484
+
rp.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: user})
485
485
return
486
486
}
487
487
···
522
522
issue, ok := r.Context().Value("issue").(*models.Issue)
523
523
if !ok {
524
524
l.Error("failed to get issue")
525
-
rp.pages.Error404(w)
525
+
rp.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: user})
526
526
return
527
527
}
528
528
···
626
626
issue, ok := r.Context().Value("issue").(*models.Issue)
627
627
if !ok {
628
628
l.Error("failed to get issue")
629
-
rp.pages.Error404(w)
629
+
rp.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: user})
630
630
return
631
631
}
632
632
···
667
667
issue, ok := r.Context().Value("issue").(*models.Issue)
668
668
if !ok {
669
669
l.Error("failed to get issue")
670
-
rp.pages.Error404(w)
670
+
rp.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: user})
671
671
return
672
672
}
673
673
···
708
708
issue, ok := r.Context().Value("issue").(*models.Issue)
709
709
if !ok {
710
710
l.Error("failed to get issue")
711
-
rp.pages.Error404(w)
711
+
rp.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: user})
712
712
return
713
713
}
714
714
···
864
864
)
865
865
if err != nil {
866
866
l.Error("failed to fetch labels", "err", err)
867
-
rp.pages.Error503(w)
867
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
868
868
return
869
869
}
870
870
+9
-9
appview/middleware/middleware.go
+9
-9
appview/middleware/middleware.go
···
191
191
if err != nil {
192
192
// invalid did or handle
193
193
log.Printf("failed to resolve did/handle '%s': %s\n", didOrHandle, err)
194
-
mw.pages.Error404(w)
194
+
mw.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: mw.oauth.GetUser(req)})
195
195
return
196
196
}
197
197
···
222
222
)
223
223
if err != nil {
224
224
log.Println("failed to resolve repo", "err", err)
225
-
mw.pages.ErrorKnot404(w)
225
+
mw.pages.ErrorKnot404(w, pages.ErrorPageParams{LoggedInUser: mw.oauth.GetUser(req)})
226
226
return
227
227
}
228
228
···
239
239
f, err := mw.repoResolver.Resolve(r)
240
240
if err != nil {
241
241
log.Println("failed to fully resolve repo", err)
242
-
mw.pages.ErrorKnot404(w)
242
+
mw.pages.ErrorKnot404(w, pages.ErrorPageParams{LoggedInUser: mw.oauth.GetUser(r)})
243
243
return
244
244
}
245
245
···
247
247
prIdInt, err := strconv.Atoi(prId)
248
248
if err != nil {
249
249
log.Println("failed to parse pr id", err)
250
-
mw.pages.Error404(w)
250
+
mw.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: mw.oauth.GetUser(r)})
251
251
return
252
252
}
253
253
254
254
pr, err := db.GetPull(mw.db, f.RepoAt(), prIdInt)
255
255
if err != nil {
256
256
log.Println("failed to get pull and comments", err)
257
-
mw.pages.Error404(w)
257
+
mw.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: mw.oauth.GetUser(r)})
258
258
return
259
259
}
260
260
···
287
287
f, err := mw.repoResolver.Resolve(r)
288
288
if err != nil {
289
289
log.Println("failed to fully resolve repo", err)
290
-
mw.pages.ErrorKnot404(w)
290
+
mw.pages.ErrorKnot404(w, pages.ErrorPageParams{LoggedInUser: mw.oauth.GetUser(r)})
291
291
return
292
292
}
293
293
···
295
295
issueId, err := strconv.Atoi(issueIdStr)
296
296
if err != nil {
297
297
log.Println("failed to fully resolve issue ID", err)
298
-
mw.pages.Error404(w)
298
+
mw.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: mw.oauth.GetUser(r)})
299
299
return
300
300
}
301
301
302
302
issue, err := db.GetIssue(mw.db, f.RepoAt(), issueId)
303
303
if err != nil {
304
304
log.Println("failed to get issues", "err", err)
305
-
mw.pages.Error404(w)
305
+
mw.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: mw.oauth.GetUser(r)})
306
306
return
307
307
}
308
308
···
323
323
f, err := mw.repoResolver.Resolve(r)
324
324
if err != nil {
325
325
log.Println("failed to fully resolve repo", err)
326
-
mw.pages.ErrorKnot404(w)
326
+
mw.pages.ErrorKnot404(w, pages.ErrorPageParams{LoggedInUser: mw.oauth.GetUser(r)})
327
327
return
328
328
}
329
329
+2
-2
appview/notifications/notifications.go
+2
-2
appview/notifications/notifications.go
···
57
57
)
58
58
if err != nil {
59
59
l.Error("failed to get total notifications", "err", err)
60
-
n.pages.Error500(w)
60
+
n.pages.Error500(w, pages.ErrorPageParams{LoggedInUser: user})
61
61
return
62
62
}
63
63
···
68
68
)
69
69
if err != nil {
70
70
l.Error("failed to get notifications", "err", err)
71
-
n.pages.Error500(w)
71
+
n.pages.Error500(w, pages.ErrorPageParams{LoggedInUser: user})
72
72
return
73
73
}
74
74
+12
-8
appview/pages/pages.go
+12
-8
appview/pages/pages.go
···
1437
1437
return hex.EncodeToString(hasher.Sum(nil))[:8] // Use first 8 chars of hash
1438
1438
}
1439
1439
1440
-
func (p *Pages) Error500(w io.Writer) error {
1441
-
return p.execute("errors/500", w, nil)
1440
+
type ErrorPageParams struct {
1441
+
LoggedInUser *oauth.User
1442
1442
}
1443
1443
1444
-
func (p *Pages) Error404(w io.Writer) error {
1445
-
return p.execute("errors/404", w, nil)
1444
+
func (p *Pages) Error500(w io.Writer, params ErrorPageParams) error {
1445
+
return p.execute("errors/500", w, params)
1446
1446
}
1447
1447
1448
-
func (p *Pages) ErrorKnot404(w io.Writer) error {
1449
-
return p.execute("errors/knot404", w, nil)
1448
+
func (p *Pages) Error404(w io.Writer, params ErrorPageParams) error {
1449
+
return p.execute("errors/404", w, params)
1450
1450
}
1451
1451
1452
-
func (p *Pages) Error503(w io.Writer) error {
1453
-
return p.execute("errors/503", w, nil)
1452
+
func (p *Pages) ErrorKnot404(w io.Writer, params ErrorPageParams) error {
1453
+
return p.execute("errors/knot404", w, params)
1454
+
}
1455
+
1456
+
func (p *Pages) Error503(w io.Writer, params ErrorPageParams) error {
1457
+
return p.execute("errors/503", w, params)
1454
1458
}
+10
-10
appview/pulls/pulls.go
+10
-10
appview/pulls/pulls.go
···
211
211
)
212
212
if err != nil {
213
213
log.Println("failed to fetch labels", err)
214
-
s.pages.Error503(w)
214
+
s.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
215
215
return
216
216
}
217
217
···
671
671
)
672
672
if err != nil {
673
673
log.Println("failed to fetch labels", err)
674
-
s.pages.Error503(w)
674
+
s.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
675
675
return
676
676
}
677
677
···
831
831
if err != nil {
832
832
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
833
833
log.Println("failed to call XRPC repo.branches", xrpcerr)
834
-
s.pages.Error503(w)
834
+
s.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
835
835
return
836
836
}
837
837
log.Println("failed to fetch branches", err)
···
841
841
var result types.RepoBranchesResponse
842
842
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
843
843
log.Println("failed to decode XRPC response", err)
844
-
s.pages.Error503(w)
844
+
s.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
845
845
return
846
846
}
847
847
···
1438
1438
if err != nil {
1439
1439
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
1440
1440
log.Println("failed to call XRPC repo.branches", xrpcerr)
1441
-
s.pages.Error503(w)
1441
+
s.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
1442
1442
return
1443
1443
}
1444
1444
log.Println("failed to fetch branches", err)
···
1448
1448
var result types.RepoBranchesResponse
1449
1449
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
1450
1450
log.Println("failed to decode XRPC response", err)
1451
-
s.pages.Error503(w)
1451
+
s.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
1452
1452
return
1453
1453
}
1454
1454
···
1530
1530
if err != nil {
1531
1531
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
1532
1532
log.Println("failed to call XRPC repo.branches for source", xrpcerr)
1533
-
s.pages.Error503(w)
1533
+
s.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
1534
1534
return
1535
1535
}
1536
1536
log.Println("failed to fetch source branches", err)
···
1541
1541
var sourceBranches types.RepoBranchesResponse
1542
1542
if err := json.Unmarshal(sourceXrpcBytes, &sourceBranches); err != nil {
1543
1543
log.Println("failed to decode source branches XRPC response", err)
1544
-
s.pages.Error503(w)
1544
+
s.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
1545
1545
return
1546
1546
}
1547
1547
···
1559
1559
if err != nil {
1560
1560
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
1561
1561
log.Println("failed to call XRPC repo.branches for target", xrpcerr)
1562
-
s.pages.Error503(w)
1562
+
s.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
1563
1563
return
1564
1564
}
1565
1565
log.Println("failed to fetch target branches", err)
···
1570
1570
var targetBranches types.RepoBranchesResponse
1571
1571
if err := json.Unmarshal(targetXrpcBytes, &targetBranches); err != nil {
1572
1572
log.Println("failed to decode target branches XRPC response", err)
1573
-
s.pages.Error503(w)
1573
+
s.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
1574
1574
return
1575
1575
}
1576
1576
+2
-1
appview/repo/archive.go
+2
-1
appview/repo/archive.go
···
7
7
"strings"
8
8
9
9
"tangled.org/core/api/tangled"
10
+
"tangled.org/core/appview/pages"
10
11
xrpcclient "tangled.org/core/appview/xrpcclient"
11
12
12
13
indigoxrpc "github.com/bluesky-social/indigo/xrpc"
···
35
36
archiveBytes, err := tangled.RepoArchive(r.Context(), xrpcc, "tar.gz", "", ref, repo)
36
37
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
37
38
l.Error("failed to call XRPC repo.archive", "err", xrpcerr)
38
-
rp.pages.Error503(w)
39
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: rp.oauth.GetUser(r)})
39
40
return
40
41
}
41
42
// Set headers for file download, just pass along whatever the knot specifies
+3
-4
appview/repo/blob.go
+3
-4
appview/repo/blob.go
···
33
33
// - rest : | |
34
34
func (rp *Repo) Blob(w http.ResponseWriter, r *http.Request) {
35
35
l := rp.logger.With("handler", "RepoBlob")
36
+
user := rp.oauth.GetUser(r)
36
37
37
38
f, err := rp.repoResolver.Resolve(r)
38
39
if err != nil {
···
58
59
resp, err := tangled.RepoBlob(r.Context(), xrpcc, filePath, false, ref, repo)
59
60
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
60
61
l.Error("failed to call XRPC repo.blob", "err", xrpcerr)
61
-
rp.pages.Error503(w)
62
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
62
63
return
63
64
}
64
65
···
73
74
74
75
// Create the blob view
75
76
blobView := NewBlobView(resp, rp.config, f, ref, filePath, r.URL.Query())
76
-
77
-
user := rp.oauth.GetUser(r)
78
77
79
78
rp.pages.RepoBlob(w, pages.RepoBlobParams{
80
79
LoggedInUser: user,
···
133
132
resp, err := client.Do(req)
134
133
if err != nil {
135
134
l.Error("failed to reach knotserver", "err", err)
136
-
rp.pages.Error503(w)
135
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: rp.oauth.GetUser(r)})
137
136
return
138
137
}
139
138
+3
-3
appview/repo/branches.go
+3
-3
appview/repo/branches.go
···
16
16
17
17
func (rp *Repo) Branches(w http.ResponseWriter, r *http.Request) {
18
18
l := rp.logger.With("handler", "RepoBranches")
19
+
user := rp.oauth.GetUser(r)
19
20
f, err := rp.repoResolver.Resolve(r)
20
21
if err != nil {
21
22
l.Error("failed to get repo and knot", "err", err)
···
33
34
xrpcBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo)
34
35
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
35
36
l.Error("failed to call XRPC repo.branches", "err", xrpcerr)
36
-
rp.pages.Error503(w)
37
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
37
38
return
38
39
}
39
40
var result types.RepoBranchesResponse
40
41
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
41
42
l.Error("failed to decode XRPC response", "err", err)
42
-
rp.pages.Error503(w)
43
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
43
44
return
44
45
}
45
46
sortBranches(result.Branches)
46
-
user := rp.oauth.GetUser(r)
47
47
rp.pages.RepoBranches(w, pages.RepoBranchesParams{
48
48
LoggedInUser: user,
49
49
RepoInfo: f.RepoInfo(user),
+6
-6
appview/repo/compare.go
+6
-6
appview/repo/compare.go
···
40
40
branchBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo)
41
41
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
42
42
l.Error("failed to call XRPC repo.branches", "err", xrpcerr)
43
-
rp.pages.Error503(w)
43
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
44
44
return
45
45
}
46
46
···
77
77
tagBytes, err := tangled.RepoTags(r.Context(), xrpcc, "", 0, repo)
78
78
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
79
79
l.Error("failed to call XRPC repo.tags", "err", xrpcerr)
80
-
rp.pages.Error503(w)
80
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
81
81
return
82
82
}
83
83
···
138
138
139
139
if base == "" || head == "" {
140
140
l.Error("invalid comparison")
141
-
rp.pages.Error404(w)
141
+
rp.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: user})
142
142
return
143
143
}
144
144
···
156
156
branchBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo)
157
157
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
158
158
l.Error("failed to call XRPC repo.branches", "err", xrpcerr)
159
-
rp.pages.Error503(w)
159
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
160
160
return
161
161
}
162
162
···
170
170
tagBytes, err := tangled.RepoTags(r.Context(), xrpcc, "", 0, repo)
171
171
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
172
172
l.Error("failed to call XRPC repo.tags", "err", xrpcerr)
173
-
rp.pages.Error503(w)
173
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
174
174
return
175
175
}
176
176
···
184
184
compareBytes, err := tangled.RepoCompare(r.Context(), xrpcc, repo, base, head)
185
185
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
186
186
l.Error("failed to call XRPC repo.compare", "err", xrpcerr)
187
-
rp.pages.Error503(w)
187
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
188
188
return
189
189
}
190
190
+3
-2
appview/repo/feed.go
+3
-2
appview/repo/feed.go
···
10
10
11
11
"tangled.org/core/appview/db"
12
12
"tangled.org/core/appview/models"
13
+
"tangled.org/core/appview/pages"
13
14
"tangled.org/core/appview/pagination"
14
15
"tangled.org/core/appview/reporesolver"
15
16
···
156
157
feed, err := rp.getRepoFeed(r.Context(), f)
157
158
if err != nil {
158
159
log.Println("failed to get repo feed:", err)
159
-
rp.pages.Error500(w)
160
+
rp.pages.Error500(w, pages.ErrorPageParams{LoggedInUser: nil})
160
161
return
161
162
}
162
163
163
164
atom, err := feed.ToAtom()
164
165
if err != nil {
165
-
rp.pages.Error500(w)
166
+
rp.pages.Error500(w, pages.ErrorPageParams{LoggedInUser: nil})
166
167
return
167
168
}
168
169
+1
-1
appview/repo/index.go
+1
-1
appview/repo/index.go
+9
-10
appview/repo/log.go
+9
-10
appview/repo/log.go
···
22
22
23
23
func (rp *Repo) Log(w http.ResponseWriter, r *http.Request) {
24
24
l := rp.logger.With("handler", "RepoLog")
25
+
user := rp.oauth.GetUser(r)
25
26
26
27
f, err := rp.repoResolver.Resolve(r)
27
28
if err != nil {
···
61
62
xrpcBytes, err := tangled.RepoLog(r.Context(), xrpcc, cursor, limit, "", ref, repo)
62
63
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
63
64
l.Error("failed to call XRPC repo.log", "err", xrpcerr)
64
-
rp.pages.Error503(w)
65
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
65
66
return
66
67
}
67
68
68
69
var xrpcResp types.RepoLogResponse
69
70
if err := json.Unmarshal(xrpcBytes, &xrpcResp); err != nil {
70
71
l.Error("failed to decode XRPC response", "err", err)
71
-
rp.pages.Error503(w)
72
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
72
73
return
73
74
}
74
75
75
76
tagBytes, err := tangled.RepoTags(r.Context(), xrpcc, "", 0, repo)
76
77
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
77
78
l.Error("failed to call XRPC repo.tags", "err", xrpcerr)
78
-
rp.pages.Error503(w)
79
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
79
80
return
80
81
}
81
82
···
96
97
branchBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo)
97
98
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
98
99
l.Error("failed to call XRPC repo.branches", "err", xrpcerr)
99
-
rp.pages.Error503(w)
100
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
100
101
return
101
102
}
102
103
···
109
110
}
110
111
}
111
112
112
-
user := rp.oauth.GetUser(r)
113
-
114
113
emailToDidMap, err := db.GetEmailToDid(rp.db, uniqueEmails(xrpcResp.Commits), true)
115
114
if err != nil {
116
115
l.Error("failed to fetch email to did mapping", "err", err)
···
146
145
147
146
func (rp *Repo) Commit(w http.ResponseWriter, r *http.Request) {
148
147
l := rp.logger.With("handler", "RepoCommit")
148
+
user := rp.oauth.GetUser(r)
149
149
150
150
f, err := rp.repoResolver.Resolve(r)
151
151
if err != nil {
···
161
161
}
162
162
163
163
if !plumbing.IsHash(ref) {
164
-
rp.pages.Error404(w)
164
+
rp.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: user})
165
165
return
166
166
}
167
167
···
178
178
xrpcBytes, err := tangled.RepoDiff(r.Context(), xrpcc, ref, repo)
179
179
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
180
180
l.Error("failed to call XRPC repo.diff", "err", xrpcerr)
181
-
rp.pages.Error503(w)
181
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
182
182
return
183
183
}
184
184
185
185
var result types.RepoCommitResponse
186
186
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
187
187
l.Error("failed to decode XRPC response", "err", err)
188
-
rp.pages.Error503(w)
188
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
189
189
return
190
190
}
191
191
···
199
199
l.Error("failed to GetVerifiedCommits", "err", err)
200
200
}
201
201
202
-
user := rp.oauth.GetUser(r)
203
202
repoInfo := f.RepoInfo(user)
204
203
pipelines, err := getPipelineStatuses(rp.db, repoInfo, []string{result.Diff.Commit.This})
205
204
if err != nil {
+4
-4
appview/repo/settings.go
+4
-4
appview/repo/settings.go
···
198
198
xrpcBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo)
199
199
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
200
200
l.Error("failed to call XRPC repo.branches", "err", xrpcerr)
201
-
rp.pages.Error503(w)
201
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
202
202
return
203
203
}
204
204
205
205
var result types.RepoBranchesResponse
206
206
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
207
207
l.Error("failed to decode XRPC response", "err", err)
208
-
rp.pages.Error503(w)
208
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
209
209
return
210
210
}
211
211
212
212
defaultLabels, err := db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", rp.config.Label.DefaultLabelDefs))
213
213
if err != nil {
214
214
l.Error("failed to fetch labels", "err", err)
215
-
rp.pages.Error503(w)
215
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
216
216
return
217
217
}
218
218
219
219
labels, err := db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", f.Repo.Labels))
220
220
if err != nil {
221
221
l.Error("failed to fetch labels", "err", err)
222
-
rp.pages.Error503(w)
222
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
223
223
return
224
224
}
225
225
// remove default labels from the labels list, if present
+2
-2
appview/repo/tree.go
+2
-2
appview/repo/tree.go
···
19
19
20
20
func (rp *Repo) Tree(w http.ResponseWriter, r *http.Request) {
21
21
l := rp.logger.With("handler", "RepoTree")
22
+
user := rp.oauth.GetUser(r)
22
23
f, err := rp.repoResolver.Resolve(r)
23
24
if err != nil {
24
25
l.Error("failed to fully resolve repo", "err", err)
···
43
44
xrpcResp, err := tangled.RepoTree(r.Context(), xrpcc, treePath, ref, repo)
44
45
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
45
46
l.Error("failed to call XRPC repo.tree", "err", xrpcerr)
46
-
rp.pages.Error503(w)
47
+
rp.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
47
48
return
48
49
}
49
50
// Convert XRPC response to internal types.RepoTreeResponse
···
86
87
http.Redirect(w, r, redirectTo, http.StatusFound)
87
88
return
88
89
}
89
-
user := rp.oauth.GetUser(r)
90
90
var breadcrumbs [][]string
91
91
breadcrumbs = append(breadcrumbs, []string{f.Name, fmt.Sprintf("/%s/tree/%s", f.OwnerSlashRepo(), url.PathEscape(ref))})
92
92
if treePath != "" {
+3
-3
appview/state/gfi.go
+3
-3
appview/state/gfi.go
···
23
23
gfiLabelDef, err := db.GetLabelDefinition(s.db, db.FilterEq("at_uri", goodFirstIssueLabel))
24
24
if err != nil {
25
25
log.Println("failed to get gfi label def", err)
26
-
s.pages.Error500(w)
26
+
s.pages.Error500(w, pages.ErrorPageParams{LoggedInUser: user})
27
27
return
28
28
}
29
29
30
30
repoLabels, err := db.GetRepoLabels(s.db, db.FilterEq("label_at", goodFirstIssueLabel))
31
31
if err != nil {
32
32
log.Println("failed to get repo labels", err)
33
-
s.pages.Error503(w)
33
+
s.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
34
34
return
35
35
}
36
36
···
60
60
)
61
61
if err != nil {
62
62
log.Println("failed to get issues", err)
63
-
s.pages.Error503(w)
63
+
s.pages.Error503(w, pages.ErrorPageParams{LoggedInUser: user})
64
64
return
65
65
}
66
66
+18
-14
appview/state/profile.go
+18
-14
appview/state/profile.go
···
112
112
113
113
func (s *State) profileOverview(w http.ResponseWriter, r *http.Request) {
114
114
l := s.logger.With("handler", "profileHomePage")
115
+
user := s.oauth.GetUser(r)
115
116
116
117
profile, err := s.profile(r)
117
118
if err != nil {
118
119
l.Error("failed to build profile card", "err", err)
119
-
s.pages.Error500(w)
120
+
s.pages.Error500(w, pages.ErrorPageParams{LoggedInUser: user})
120
121
return
121
122
}
122
123
l = l.With("profileDid", profile.UserDid, "profileHandle", profile.UserHandle)
···
163
164
}
164
165
165
166
s.pages.ProfileOverview(w, pages.ProfileOverviewParams{
166
-
LoggedInUser: s.oauth.GetUser(r),
167
+
LoggedInUser: user,
167
168
Card: profile,
168
169
Repos: pinnedRepos,
169
170
CollaboratingRepos: pinnedCollaboratingRepos,
···
173
174
174
175
func (s *State) reposPage(w http.ResponseWriter, r *http.Request) {
175
176
l := s.logger.With("handler", "reposPage")
177
+
user := s.oauth.GetUser(r)
176
178
177
179
profile, err := s.profile(r)
178
180
if err != nil {
179
181
l.Error("failed to build profile card", "err", err)
180
-
s.pages.Error500(w)
182
+
s.pages.Error500(w, pages.ErrorPageParams{LoggedInUser: user})
181
183
return
182
184
}
183
185
l = l.With("profileDid", profile.UserDid, "profileHandle", profile.UserHandle)
···
189
191
)
190
192
if err != nil {
191
193
l.Error("failed to get repos", "err", err)
192
-
s.pages.Error500(w)
194
+
s.pages.Error500(w, pages.ErrorPageParams{LoggedInUser: user})
193
195
return
194
196
}
195
197
196
198
err = s.pages.ProfileRepos(w, pages.ProfileReposParams{
197
-
LoggedInUser: s.oauth.GetUser(r),
199
+
LoggedInUser: user,
198
200
Repos: repos,
199
201
Card: profile,
200
202
})
···
202
204
203
205
func (s *State) starredPage(w http.ResponseWriter, r *http.Request) {
204
206
l := s.logger.With("handler", "starredPage")
207
+
user := s.oauth.GetUser(r)
205
208
206
209
profile, err := s.profile(r)
207
210
if err != nil {
208
211
l.Error("failed to build profile card", "err", err)
209
-
s.pages.Error500(w)
212
+
s.pages.Error500(w, pages.ErrorPageParams{LoggedInUser: user})
210
213
return
211
214
}
212
215
l = l.With("profileDid", profile.UserDid, "profileHandle", profile.UserHandle)
···
214
217
stars, err := db.GetRepoStars(s.db, 0, db.FilterEq("did", profile.UserDid))
215
218
if err != nil {
216
219
l.Error("failed to get stars", "err", err)
217
-
s.pages.Error500(w)
220
+
s.pages.Error500(w, pages.ErrorPageParams{LoggedInUser: user})
218
221
return
219
222
}
220
223
var repos []models.Repo
···
223
226
}
224
227
225
228
err = s.pages.ProfileStarred(w, pages.ProfileStarredParams{
226
-
LoggedInUser: s.oauth.GetUser(r),
229
+
LoggedInUser: user,
227
230
Repos: repos,
228
231
Card: profile,
229
232
})
···
231
234
232
235
func (s *State) stringsPage(w http.ResponseWriter, r *http.Request) {
233
236
l := s.logger.With("handler", "stringsPage")
237
+
user := s.oauth.GetUser(r)
234
238
235
239
profile, err := s.profile(r)
236
240
if err != nil {
237
241
l.Error("failed to build profile card", "err", err)
238
-
s.pages.Error500(w)
242
+
s.pages.Error500(w, pages.ErrorPageParams{LoggedInUser: user})
239
243
return
240
244
}
241
245
l = l.With("profileDid", profile.UserDid, "profileHandle", profile.UserHandle)
···
243
247
strings, err := db.GetStrings(s.db, 0, db.FilterEq("did", profile.UserDid))
244
248
if err != nil {
245
249
l.Error("failed to get strings", "err", err)
246
-
s.pages.Error500(w)
250
+
s.pages.Error500(w, pages.ErrorPageParams{LoggedInUser: user})
247
251
return
248
252
}
249
253
250
254
err = s.pages.ProfileStrings(w, pages.ProfileStringsParams{
251
-
LoggedInUser: s.oauth.GetUser(r),
255
+
LoggedInUser: user,
252
256
Strings: strings,
253
257
Card: profile,
254
258
})
···
379
383
func (s *State) AtomFeedPage(w http.ResponseWriter, r *http.Request) {
380
384
ident, ok := r.Context().Value("resolvedId").(identity.Identity)
381
385
if !ok {
382
-
s.pages.Error404(w)
386
+
s.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: nil})
383
387
return
384
388
}
385
389
386
390
feed, err := s.getProfileFeed(r.Context(), &ident)
387
391
if err != nil {
388
-
s.pages.Error500(w)
392
+
s.pages.Error500(w, pages.ErrorPageParams{LoggedInUser: nil})
389
393
return
390
394
}
391
395
···
395
399
396
400
atom, err := feed.ToAtom()
397
401
if err != nil {
398
-
s.pages.Error500(w)
402
+
s.pages.Error500(w, pages.ErrorPageParams{LoggedInUser: nil})
399
403
return
400
404
}
401
405
+3
-2
appview/state/router.go
+3
-2
appview/state/router.go
···
10
10
"tangled.org/core/appview/labels"
11
11
"tangled.org/core/appview/middleware"
12
12
"tangled.org/core/appview/notifications"
13
+
"tangled.org/core/appview/pages"
13
14
"tangled.org/core/appview/pipelines"
14
15
"tangled.org/core/appview/pulls"
15
16
"tangled.org/core/appview/repo"
···
108
109
})
109
110
110
111
r.NotFound(func(w http.ResponseWriter, r *http.Request) {
111
-
s.pages.Error404(w)
112
+
s.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: s.oauth.GetUser(r)})
112
113
})
113
114
114
115
return r
···
179
180
r.Get("/brand", s.Brand)
180
181
181
182
r.NotFound(func(w http.ResponseWriter, r *http.Request) {
182
-
s.pages.Error404(w)
183
+
s.pages.Error404(w, pages.ErrorPageParams{LoggedInUser: s.oauth.GetUser(r)})
183
184
})
184
185
return r
185
186
}
+2
-2
appview/strings/strings.go
+2
-2
appview/strings/strings.go
···
88
88
89
89
func (s *Strings) contents(w http.ResponseWriter, r *http.Request) {
90
90
l := s.Logger.With("handler", "contents")
91
+
user := s.OAuth.GetUser(r)
91
92
92
93
id, ok := r.Context().Value("resolvedId").(identity.Identity)
93
94
if !ok {
···
118
119
}
119
120
if len(strings) < 1 {
120
121
l.Error("string not found")
121
-
s.Pages.Error404(w)
122
+
s.Pages.Error404(w, pages.ErrorPageParams{LoggedInUser: user})
122
123
return
123
124
}
124
125
if len(strings) != 1 {
···
152
153
if err != nil {
153
154
l.Error("failed to get star count", "err", err)
154
155
}
155
-
user := s.OAuth.GetUser(r)
156
156
isStarred := false
157
157
if user != nil {
158
158
isStarred = db.GetStarStatus(s.Db, user.Did, string.AtUri())