From efcd34bcb786d6266cd28b689971ddc17a23564a Mon Sep 17 00:00:00 2001 From: mkelvers Date: Sat, 2 May 2026 16:47:26 +0200 Subject: [PATCH] fix: ensure segments is never nil in watch page data --- api/anime/handler.go | 6 +++--- api/playback/service_base.go | 12 ++++++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/api/anime/handler.go b/api/anime/handler.go index 4426a27..058d46a 100644 --- a/api/anime/handler.go +++ b/api/anime/handler.go @@ -313,7 +313,7 @@ func (h *Handler) HandleDiscover(w http.ResponseWriter, r *http.Request) { seen[a.MalID] = true uniqueTrending = append(uniqueTrending, a) } - if len(uniqueTrending) >= 10 { + if len(uniqueTrending) >= 8 { break } } @@ -324,7 +324,7 @@ func (h *Handler) HandleDiscover(w http.ResponseWriter, r *http.Request) { seen[a.MalID] = true uniqueUpcoming = append(uniqueUpcoming, a) } - if len(uniqueUpcoming) >= 10 { + if len(uniqueUpcoming) >= 8 { break } } @@ -335,7 +335,7 @@ func (h *Handler) HandleDiscover(w http.ResponseWriter, r *http.Request) { seen[a.MalID] = true uniqueTop = append(uniqueTop, a) } - if len(uniqueTop) >= 10 { + if len(uniqueTop) >= 8 { break } } diff --git a/api/playback/service_base.go b/api/playback/service_base.go index 7c82585..769f2c1 100644 --- a/api/playback/service_base.go +++ b/api/playback/service_base.go @@ -169,6 +169,11 @@ func (s *Service) BuildWatchPageData(ctx context.Context, malID int, titleCandid return WatchPageData{}, errors.New("stream mode unavailable") } + segments := baseData.Segments + if segments == nil { + segments = []SkipSegment{} + } + userState := userPlaybackState{} if userStateCh != nil { userState = <-userStateCh @@ -183,7 +188,7 @@ func (s *Service) BuildWatchPageData(ctx context.Context, malID int, titleCandid InitialMode: initialMode, AvailableModes: cloneSlice(baseData.AvailableModes), ModeSources: clientModeSources, - Segments: cloneSlice(baseData.Segments), + Segments: cloneSlice(segments), }, nil } @@ -345,8 +350,11 @@ func clonePlaybackBaseData(data playbackBaseData) playbackBaseData { } func cloneSlice[T any](items []T) []T { + if items == nil { + return []T{} + } if len(items) == 0 { - return nil + return []T{} } cloned := make([]T, len(items)) copy(cloned, items)