diff --git a/internal/shared/ui/anime_list.templ b/internal/shared/ui/anime_list.templ new file mode 100644 index 0000000..fbdeb9c --- /dev/null +++ b/internal/shared/ui/anime_list.templ @@ -0,0 +1,49 @@ +package ui + +import ( + "fmt" + "mal/internal/jikan" +) + +templ InfiniteAnimeList(animes []jikan.Anime, hasNext bool, nextURL string, containerID string) { + for _, anime := range animes { +
+ @CatalogItem(anime) +
+ } + if hasNext { +
+ } + +} + +templ CatalogItem(anime jikan.Anime) { + + if anime.ImageURL() != "" { + { + } else { +
No image
+ } +
+
+ { anime.DisplayTitle() } +
+} diff --git a/internal/templates/catalog.templ b/internal/templates/catalog.templ index e32bab3..2f46db5 100644 --- a/internal/templates/catalog.templ +++ b/internal/templates/catalog.templ @@ -14,49 +14,6 @@ templ Catalog() { } } -templ InfiniteAnimeList(animes []jikan.Anime, hasNext bool, nextURL string, containerID string) { - for _, anime := range animes { -
- @CatalogItem(anime) -
- } - if hasNext { -
- } - -} - templ CatalogItems(animes []jikan.Anime, nextPage int, hasNext bool) { - @InfiniteAnimeList(animes, hasNext, string(templ.URL(fmt.Sprintf("/api/catalog?page=%d", nextPage))), "catalog-content") -} - -templ CatalogItem(anime jikan.Anime) { - - if anime.ImageURL() != "" { - { - } else { -
No image
- } -
-
- { anime.DisplayTitle() } -
+ @ui.InfiniteAnimeList(animes, hasNext, string(templ.URL(fmt.Sprintf("/api/catalog?page=%d", nextPage))), "catalog-content") } diff --git a/internal/templates/discovery.templ b/internal/templates/discovery.templ index 2d9fed5..a05ba9f 100644 --- a/internal/templates/discovery.templ +++ b/internal/templates/discovery.templ @@ -1,6 +1,7 @@ package templates import "mal/internal/jikan" +import "mal/internal/shared/ui" import "fmt" templ Discover() { @@ -27,11 +28,8 @@ templ Discover() {
-
-
-
-
- Loading discover +
+ @ui.LoadingIndicator("Loading discover")
@@ -39,5 +37,5 @@ templ Discover() { } templ DiscoverItems(animes []jikan.Anime, listType string, nextPage int, hasNext bool) { - @InfiniteAnimeList(animes, hasNext, string(templ.URL(fmt.Sprintf("/api/discover/%s?page=%d", listType, nextPage))), "discover-content") + @ui.InfiniteAnimeList(animes, hasNext, string(templ.URL(fmt.Sprintf("/api/discover/%s?page=%d", listType, nextPage))), "discover-content") } diff --git a/internal/templates/index.templ b/internal/templates/index.templ index d24a5dd..be8e8e9 100644 --- a/internal/templates/index.templ +++ b/internal/templates/index.templ @@ -35,5 +35,5 @@ templ SearchResultsWrapper(query string, animes []jikan.Anime, nextPage int, has } templ SearchItems(query string, animes []jikan.Anime, nextPage int, hasNext bool) { - @InfiniteAnimeList(animes, hasNext, string(templ.URL(fmt.Sprintf("/api/search?q=%s&page=%d", url.QueryEscape(query), nextPage))), "results") + @ui.InfiniteAnimeList(animes, hasNext, string(templ.URL(fmt.Sprintf("/api/search?q=%s&page=%d", url.QueryEscape(query), nextPage))), "results") }