From c26d9fa0b073e368f88d5c8a06870b872444f18a Mon Sep 17 00:00:00 2001 From: Tigor Hutasuhut Date: Tue, 30 Apr 2024 15:28:04 +0700 Subject: [PATCH] view: added subreddits listing page --- pubsub.db-journal | Bin 4616 -> 0 bytes server/routes/page_subreddits.go | 25 +++++++++++++++++ server/routes/routes.go | 1 + views/components/dayjs.templ | 13 +++++++++ views/components/head.templ | 9 ------ views/homeview/homeview.templ | 9 ++++-- views/subredditsview/subredditsview.templ | 29 ++++++++++++++++++++ views/subredditsview/subredditsview_data.go | 7 +++++ 8 files changed, 81 insertions(+), 12 deletions(-) delete mode 100644 pubsub.db-journal create mode 100644 server/routes/page_subreddits.go create mode 100644 views/components/dayjs.templ create mode 100644 views/subredditsview/subredditsview.templ create mode 100644 views/subredditsview/subredditsview_data.go diff --git a/pubsub.db-journal b/pubsub.db-journal deleted file mode 100644 index 28d7df7f268c15a1be877cd40c3a0649f7b500c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4616 zcmZQzK!Cb=mnQ>xtPBiHKuQ21G0GawA;7{5^c^GrM+P7o1*0J_8UmvsFd71*Aut*O tqaiRF0;3@?8UmvsFd71*Aut*O!zBcG8Cj$m8H-X=aud^2nV3N1J^%<=3N`=$ diff --git a/server/routes/page_subreddits.go b/server/routes/page_subreddits.go new file mode 100644 index 0000000..7387cca --- /dev/null +++ b/server/routes/page_subreddits.go @@ -0,0 +1,25 @@ +package routes + +import ( + "net/http" + + "github.com/tigorlazuardi/redmage/pkg/log" + "github.com/tigorlazuardi/redmage/views" + "github.com/tigorlazuardi/redmage/views/subredditsview" +) + +func (routes *Routes) PageSubreddits(rw http.ResponseWriter, r *http.Request) { + ctx, span := tracer.Start(r.Context(), "*Routes.PageSubreddits") + defer span.End() + + data := subredditsview.Data{ + // Subreddits: routes.API.SubredditsList(ctx), + } + + c := views.NewContext(routes.Config, r) + + if err := subredditsview.Subreddit(c, data).Render(r.Context(), rw); err != nil { + log.New(ctx).Err(err).Error("failed to render subreddits view") + rw.WriteHeader(http.StatusInternalServerError) + } +} diff --git a/server/routes/routes.go b/server/routes/routes.go index 4b3de19..3b55b7c 100644 --- a/server/routes/routes.go +++ b/server/routes/routes.go @@ -64,5 +64,6 @@ func (routes *Routes) registerWWWRoutes(router chi.Router) { r.Use(chimiddleware.RequestLogger(middleware.ChiLogger{})) r.Use(chimiddleware.SetHeader("Content-Type", "text/html; charset=utf-8")) r.Get("/", routes.PageHome) + r.Get("/subreddits", routes.PageSubreddits) }) } diff --git a/views/components/dayjs.templ b/views/components/dayjs.templ new file mode 100644 index 0000000..3e6012b --- /dev/null +++ b/views/components/dayjs.templ @@ -0,0 +1,13 @@ +package components + +templ Dayjs() { + + + + + +} diff --git a/views/components/head.templ b/views/components/head.templ index 5998b46..b4be304 100644 --- a/views/components/head.templ +++ b/views/components/head.templ @@ -10,15 +10,6 @@ templ Head(vc *views.Context, extras ...templ.Component) { - - - - - if vc.Config.Bool("http.hotreload") { diff --git a/views/homeview/homeview.templ b/views/homeview/homeview.templ index 2d4ee59..679c238 100644 --- a/views/homeview/homeview.templ +++ b/views/homeview/homeview.templ @@ -8,7 +8,10 @@ import "fmt" templ Home(c *views.Context, data Data) { @components.Doctype() { - @components.Head(c, components.HeadTitle("Redmage - Home")) + @components.Head(c, + components.Dayjs(), + components.HeadTitle("Redmage - Home"), + ) @components.Body(c) { @HomeContent(c, data) } @@ -19,7 +22,7 @@ templ Home(c *views.Context, data Data) { // // Use this template if request is HX-Boosted. templ HomeContent(c *views.Context, data Data) { -
+
@components.Container() { if data.Error != "" { @components.ErrorToast(data.Error) @@ -51,7 +54,7 @@ templ HomeContent(c *views.Context, data Data) {

{ recently.Device.Name }

for _, subreddit := range recently.Subreddits {

- + { subreddit.Subreddit.Name } - { strconv.Itoa(len(subreddit.Images)) } images diff --git a/views/subredditsview/subredditsview.templ b/views/subredditsview/subredditsview.templ new file mode 100644 index 0000000..d9718e7 --- /dev/null +++ b/views/subredditsview/subredditsview.templ @@ -0,0 +1,29 @@ +package subredditsview + +import "github.com/tigorlazuardi/redmage/views" +import "github.com/tigorlazuardi/redmage/views/components" + +templ Subreddit(c *views.Context, data Data) { + @components.Doctype() { + @components.Head(c, components.HeadTitle("Redmage - Subreddits")) + @components.Body(c) { + @SubredditContent(c, data) + } + } +} + +templ SubredditContent(c *views.Context, data Data) { +
+ @components.Container() { +

Subreddits

+
+ if len(data.Subreddits) == 0 { +

You have not added any subreddits yet.

+

Click here to add a new subreddit.

+ } + for _, subreddit := range data.Subreddits { +

{ subreddit.Name }

+ } + } +
+} diff --git a/views/subredditsview/subredditsview_data.go b/views/subredditsview/subredditsview_data.go new file mode 100644 index 0000000..f007bad --- /dev/null +++ b/views/subredditsview/subredditsview_data.go @@ -0,0 +1,7 @@ +package subredditsview + +import "github.com/tigorlazuardi/redmage/models" + +type Data struct { + Subreddits models.SubredditSlice +}