Skip to content

Commit 089557b

Browse files
committed
Replace error page with gomponents
1 parent b942224 commit 089557b

4 files changed

Lines changed: 39 additions & 76 deletions

File tree

backend/web/page/error.go

Lines changed: 0 additions & 41 deletions
This file was deleted.

backend/web/page/error.html

Lines changed: 0 additions & 12 deletions
This file was deleted.

backend/web/ui/error.go

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package ui
22

33
import (
4+
"strconv"
5+
46
g "maragu.dev/gomponents"
57
h "maragu.dev/gomponents/html"
68
)
@@ -13,6 +15,24 @@ type ErrorPageData struct {
1315
Message string
1416
}
1517

16-
func ErrorPage() g.Node {
17-
return h.Div(g.Text("TODO: Error"))
18+
func ErrorPage(data ErrorPageData) g.Node {
19+
return PageLayout(data.PageLayoutData,
20+
h.Section(h.Class("error"),
21+
h.Article(
22+
h.P(h.Class("error__code"),
23+
g.Text(strconv.Itoa(data.StatusCode)),
24+
),
25+
h.H1(h.Class("error__status"),
26+
g.Text(data.StatusText),
27+
),
28+
h.H2(h.Class("error__message"),
29+
g.Text(data.Message),
30+
),
31+
h.A(h.Class("error__link"),
32+
h.Href("/"),
33+
g.Text("Go back home"),
34+
),
35+
),
36+
),
37+
)
1838
}

backend/web/util/error.go

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"net/http"
88

99
"github.com/theandrew168/bloggulus/backend/postgres"
10-
"github.com/theandrew168/bloggulus/backend/web/page"
10+
"github.com/theandrew168/bloggulus/backend/web/ui"
1111
)
1212

1313
// Handle errors that arise from creating a new row in the database.
@@ -59,52 +59,49 @@ func DeleteErrorResponse(w http.ResponseWriter, r *http.Request, err error) {
5959

6060
// Render a 400 Bad Request error page.
6161
func BadRequestResponse(w http.ResponseWriter, r *http.Request) {
62-
tmpl := page.NewError()
6362
code := http.StatusBadRequest
64-
data := page.ErrorData{
65-
BaseData: TemplateBaseData(r, w),
63+
page := ui.ErrorPage(ui.ErrorPageData{
64+
PageLayoutData: GetPageLayoutData(r, w),
6665

6766
StatusCode: code,
6867
StatusText: http.StatusText(code),
6968
Message: "Sorry, we cannot understand what you sent.",
70-
}
69+
})
7170

7271
RenderError(w, r, code, func(w io.Writer) error {
73-
return tmpl.Render(w, data)
72+
return page.Render(w)
7473
})
7574
}
7675

7776
// Render a 403 Forbidden error page.
7877
func ForbiddenResponse(w http.ResponseWriter, r *http.Request) {
79-
tmpl := page.NewError()
8078
code := http.StatusForbidden
81-
data := page.ErrorData{
82-
BaseData: TemplateBaseData(r, w),
79+
page := ui.ErrorPage(ui.ErrorPageData{
80+
PageLayoutData: GetPageLayoutData(r, w),
8381

8482
StatusCode: code,
8583
StatusText: http.StatusText(code),
8684
Message: "Sorry, you are not allowed to access this page.",
87-
}
85+
})
8886

8987
RenderError(w, r, code, func(w io.Writer) error {
90-
return tmpl.Render(w, data)
88+
return page.Render(w)
9189
})
9290
}
9391

9492
// Render a 404 Not Found error page.
9593
func NotFoundResponse(w http.ResponseWriter, r *http.Request) {
96-
tmpl := page.NewError()
9794
code := http.StatusNotFound
98-
data := page.ErrorData{
99-
BaseData: TemplateBaseData(r, w),
95+
page := ui.ErrorPage(ui.ErrorPageData{
96+
PageLayoutData: GetPageLayoutData(r, w),
10097

10198
StatusCode: code,
10299
StatusText: http.StatusText(code),
103100
Message: "Sorry, this page could not be found.",
104-
}
101+
})
105102

106103
RenderError(w, r, code, func(w io.Writer) error {
107-
return tmpl.Render(w, data)
104+
return page.Render(w)
108105
})
109106
}
110107

@@ -115,17 +112,16 @@ func InternalServerErrorResponse(w http.ResponseWriter, r *http.Request, err err
115112
"url", r.URL.String(),
116113
)
117114

118-
tmpl := page.NewError()
119115
code := http.StatusInternalServerError
120-
data := page.ErrorData{
121-
BaseData: TemplateBaseData(r, w),
116+
page := ui.ErrorPage(ui.ErrorPageData{
117+
PageLayoutData: GetPageLayoutData(r, w),
122118

123119
StatusCode: code,
124120
StatusText: http.StatusText(code),
125121
Message: "Sorry, something went wrong.",
126-
}
122+
})
127123

128124
RenderError(w, r, code, func(w io.Writer) error {
129-
return tmpl.Render(w, data)
125+
return page.Render(w)
130126
})
131127
}

0 commit comments

Comments
 (0)