package templates import "mal/internal/jikan" import "mal/internal/database" import "fmt" type WatchingAnimeWithDetails struct { Entry database.GetWatchingAnimeRow Anime jikan.Anime } templ Notifications(watching []WatchingAnimeWithDetails, upcomingSeasons []database.GetUpcomingSeasonsRow) { @Layout("mal - notifications") {

upcoming episodes

anime you're watching

if len(watching) == 0 {

no airing anime in your watching list

add currently airing shows to your watching list to see upcoming episodes here

} else {
for _, item := range watching { @NotificationCard(item) }
}

upcoming seasons

because you've watched prequels

if len(upcomingSeasons) == 0 {

no upcoming seasons for anime you've watched

as you watch more shows, new seasons will appear here

} else {
for _, item := range upcomingSeasons { @UpcomingSeasonCard(item) }
}
} } templ UpcomingSeasonCard(item database.GetUpcomingSeasonsRow) {
if item.ImageUrl != "" { { } else {
no image
}
{ displaySeasonTitle(item) }
because you watched { item.PrequelTitle }
} func displaySeasonTitle(entry database.GetUpcomingSeasonsRow) string { if entry.TitleEnglish.Valid && entry.TitleEnglish.String != "" { return entry.TitleEnglish.String } if entry.TitleJapanese.Valid && entry.TitleJapanese.String != "" { return entry.TitleJapanese.String } return entry.TitleOriginal } templ NotificationCard(item WatchingAnimeWithDetails) {
if item.Entry.ImageUrl != "" { { } else {
no image
}
{ displayTitle(item.Entry) }
if item.Anime.Broadcast.String != "" { { item.Anime.Broadcast.String } } if item.Anime.Episodes > 0 { if item.Entry.CurrentEpisode.Valid { { fmt.Sprintf("%d / %d eps", item.Entry.CurrentEpisode.Int64, item.Anime.Episodes) } } else { { fmt.Sprintf("0 / %d eps", item.Anime.Episodes) } } } else if item.Entry.CurrentEpisode.Valid && item.Entry.CurrentEpisode.Int64 > 0 { { fmt.Sprintf("%d eps watched", item.Entry.CurrentEpisode.Int64) } }
} func displayTitle(entry database.GetWatchingAnimeRow) string { if entry.TitleEnglish.Valid && entry.TitleEnglish.String != "" { return entry.TitleEnglish.String } if entry.TitleJapanese.Valid && entry.TitleJapanese.String != "" { return entry.TitleJapanese.String } return entry.TitleOriginal } func truncate(s string, max int) string { if len(s) <= max { return s } return s[:max-3] + "..." }