From 5b1429c1a2fb70b77a6796fa701f1c198fc2454a Mon Sep 17 00:00:00 2001 From: Tigor Hutasuhut Date: Mon, 13 May 2024 15:27:36 +0700 Subject: [PATCH] view: images: better horizontal image well component --- server/routes/page_home.go | 18 ++- views/components/horizontal_image_well.templ | 9 ++ views/homeview/homeview.templ | 119 ++++++++----------- views/homeview/homeview_data.go | 3 +- 4 files changed, 68 insertions(+), 81 deletions(-) create mode 100644 views/components/horizontal_image_well.templ diff --git a/server/routes/page_home.go b/server/routes/page_home.go index b7151cd..1ac237c 100644 --- a/server/routes/page_home.go +++ b/server/routes/page_home.go @@ -4,7 +4,6 @@ import ( "net/http" "time" - "github.com/tigorlazuardi/redmage/api" "github.com/tigorlazuardi/redmage/pkg/errs" "github.com/tigorlazuardi/redmage/pkg/log" "github.com/tigorlazuardi/redmage/views" @@ -19,9 +18,9 @@ func (routes *Routes) PageHome(rw http.ResponseWriter, r *http.Request) { vc := views.NewContext(routes.Config, r) - listSubredditParams := parseSubredditListQuery(r) - - list, err := routes.API.ListSubreddits(ctx, listSubredditParams) + data.ListSubredditParams.FillFromQuery(r.URL.Query()) + data.ListSubredditParams.Limit = 0 + list, err := routes.API.ListSubreddits(ctx, data.ListSubredditParams) if err != nil { log.New(ctx).Err(err).Error("failed to list subreddits") code, message := errs.HTTPMessage(err) @@ -33,14 +32,13 @@ func (routes *Routes) PageHome(rw http.ResponseWriter, r *http.Request) { return } - imageListParams := api.ImageListParams{} - imageListParams.FillFromQuery(r.URL.Query()) - if imageListParams.CreatedAt.IsZero() { - imageListParams.CreatedAt = time.Now().Add(-time.Hour * 24) // images in the last 24 hours + data.ImageListParams.FillFromQuery(r.URL.Query()) + if data.ImageListParams.CreatedAt.IsZero() { + data.ImageListParams.CreatedAt = time.Now().Add(-time.Hour * 24) // images in the last 24 hours } - imageListParams.Limit = 0 + data.ImageListParams.Limit = 0 - imageList, err := routes.API.ImagesListWithDevicesAndSubreddits(ctx, imageListParams) + imageList, err := routes.API.ImagesListWithDevicesAndSubreddits(ctx, data.ImageListParams) if err != nil { log.New(ctx).Err(err).Error("failed to list subreddits") code, message := errs.HTTPMessage(err) diff --git a/views/components/horizontal_image_well.templ b/views/components/horizontal_image_well.templ new file mode 100644 index 0000000..e63552d --- /dev/null +++ b/views/components/horizontal_image_well.templ @@ -0,0 +1,9 @@ +package components + +templ HorizontalImageWell() { +
+
+ { children... } +
+
+} diff --git a/views/homeview/homeview.templ b/views/homeview/homeview.templ index 1cd4cb2..9a4dce5 100644 --- a/views/homeview/homeview.templ +++ b/views/homeview/homeview.templ @@ -3,7 +3,6 @@ package homeview import "github.com/tigorlazuardi/redmage/views/components" import "github.com/tigorlazuardi/redmage/views" import "github.com/tigorlazuardi/redmage/views/utils" -import "github.com/tigorlazuardi/redmage/models" import "strconv" import "fmt" @@ -28,9 +27,8 @@ templ HomeContent(c *views.Context, data Data) { @components.ErrorToast(data.Error) } else {
-

- Recently Added -

+

Recently Added

+ @filterBar(c, data)
if data.TotalImages == 0 {

There are no recently added images in the current time range.

@@ -39,20 +37,6 @@ templ HomeContent(c *views.Context, data Data) { { strconv.FormatInt(data.TotalImages, 10) } Images } -
- @recentRangeInput(c) - @nsfwToggle(c, data) -
for _, recently := range data.RecentlyAddedImages {

{ recently.Device.Name }

@@ -63,7 +47,11 @@ templ HomeContent(c *views.Context, data Data) { - { strconv.Itoa(len(subreddit.Images)) } images - @RecentlyAddedImageList(subreddit.Images, 0) + @components.HorizontalImageWell() { + for _, data := range subreddit.Images { + @components.ImageCard(data, components.HideDevice) + } + } } }
@@ -82,62 +70,53 @@ templ HomeContent(c *views.Context, data Data) { } -templ recentRangeInput(c *views.Context) { -
- +templ filterBar(c *views.Context, data Data) { +
+ @nsfwToggle(data) + @recentRangeInput(c.Query.Get("created_at"))
} -templ recentlyRangeOption(c *views.Context, value, text string) { - if c.Request.URL.Query().Get("created_at") == "" && value == "-86400" { - - } else if c.Request.URL.Query().Get("created_at") == value { - - } else { - - } +templ recentRangeInput(current string) { + + } -templ nsfwToggle(c *views.Context, data Data) { -
- -
+templ rangeOption(value, text string, selected bool) { + } -templ RecentlyAddedImageList(images models.ImageSlice, opts components.ImageCardOption) { -
- for _, data := range images { - @components.ImageCard(data, components.HideDevice) - } -
+templ nsfwToggle(data Data) { + + } diff --git a/views/homeview/homeview_data.go b/views/homeview/homeview_data.go index f99459e..425101d 100644 --- a/views/homeview/homeview_data.go +++ b/views/homeview/homeview_data.go @@ -15,7 +15,8 @@ type Data struct { TotalImages int64 Error string Now time.Time - SFW bool + ListSubredditParams api.ListSubredditsParams + ImageListParams api.ImageListParams } type RecentlyAddedImages = []RecentlyAddedImage