From 203a953352ba1bb8fb5c6eace2c57ae8400b2669 Mon Sep 17 00:00:00 2001 From: mkelvers Date: Mon, 20 Apr 2026 16:03:56 +0200 Subject: [PATCH] feat(shared): add anime utility functions package --- web/shared/anime.go | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 web/shared/anime.go diff --git a/web/shared/anime.go b/web/shared/anime.go new file mode 100644 index 0000000..e041c26 --- /dev/null +++ b/web/shared/anime.go @@ -0,0 +1,41 @@ +package shared + +import ( + "strings" + "mal/integrations/jikan" +) + +func JoinNames(entities []jikan.NamedEntity) string { + names := make([]string, len(entities)) + for i, e := range entities { + names[i] = e.Name + } + return strings.Join(names, ", ") +} + +func JoinStreamingNames(anime jikan.Anime) string { + names := make([]string, len(anime.Streaming)) + for i, s := range anime.Streaming { + names[i] = s.Name + } + return strings.Join(names, ", ") +} + +func WatchTargetEpisode(currentStatus string, nextEpisode int) int { + if currentStatus == "watching" && nextEpisode > 0 { + return nextEpisode + } + return 1 +} + +func HasExtraSidebarDetails(anime jikan.Anime) bool { + return anime.TitleJapanese != "" || + len(anime.TitleSynonyms) > 0 || + len(anime.Studios) > 0 || + len(anime.Producers) > 0 || + anime.Source != "" || + len(anime.Demographics) > 0 || + len(anime.Themes) > 0 || + anime.Broadcast.String != "" || + len(anime.Streaming) > 0 +}